0
データの新しい行を挿入する前に列(LiveStatus
)を 'N'に更新するストアドプロシージャがあり、その列のが 'Y'に設定されている場合新しい値は既に存在し、そのLiveSTatusは 'Y'です。ストアドプロシージャで更新が機能しない
新しい値が挿入されますが、前の行のlivestatus
は、同じDeviceID
のままで、まだ 'Y'です。
ストアドプロシージャ:これはあなたのコードである
DELIMITER $$
CREATE DEFINER=`testmysql`@`%` PROCEDURE `PDADeviceAssign`(
IN DeviceID varchar(50),
IN EmpID varchar(50),
IN PlazaID varchar(50),
IN LaneID varchar(50),
IN AssignDateTime varchar(50),
IN AssignTranID varchar(50),
IN AssignedBy varchar(50),
IN Start_at varchar(50),
IN End_at varchar(50),
IN IsNextDay varchar(50),
IN ClientID varchar(50),
IN Description varchar(50)
)
BEGIN
declare Sno int;
set Sno=(SELECT MAX(Sno) FROM posassignment WHERE DeviceID=DeviceID);
update posassignment set LiveStatus ='N' where Sno=Sno;
Insert into posassignment(DeviceID,EmpId,PlazaID,LaneID,AssignDateTime,AssignTranID,AssignedBy,LiveStatus,Start_at,End_at,IsNextDay,ClientId,Description)
values (DeviceID,EmpID,PlazaID,LaneID,AssignDateTime,AssignTranID,AssignedBy,'Y',Start_at,End_at,IsNextDay,ClientId,Description);
END