A、B兩個表,A表中有個update觸發器更新B表中的數據。當連續修改A表中兩條以上記錄,從修改第二條記錄開始,Post時,若B表中沒有相關聯的記錄時系統提示:
“Project APCBPersonal.exe raised exception class EOleException with message '找不到要更新的資料列。最後讀取的值已被變更。'. Process stopped. Use Step or Run to continue.”。但A表中的記錄保存成功了。若Disible A表中的觸發器修改不會有此問題。客戶端用的是ADO連結。
“Project APCBPersonal.exe raised exception class EOleException with message '找不到要更新的資料列。最後讀取的值已被變更。'. Process stopped. Use Step or Run to continue.”。但A表中的記錄保存成功了。若Disible A表中的觸發器修改不會有此問題。客戶端用的是ADO連結。
CREATE TRIGGER Update_Brush ON dbo.P_brush
FOR UPDATE
AS
BEGIN
DECLARE @AddBrushTime datetime ,
@EmpId varchar(10) ,
@In_or_out varchar(3) ,
@forget_Class tinyint ,
@DEL_AddBrushTime datetime ,
@DEL_EmpId varchar(10) ,
@DEL_In_or_out varchar(3) ,
@DEL_forget_Class tinyint
SELECT @AddBrushTime=Inserted.AddBrushTime from inserted
SELECT @EmpId=Inserted.EmpId from inserted
SELECT @In_or_out=Inserted.In_Or_out FROM Inserted
SELECT @forget_class = Inserted.forget_class FROM Inserted
SELECT @DEL_AddBrushTime= deleted.AddBrushTime from deleted
SELECT @DEL_EmpId=deleted.EmpId from deleted
SELECT @DEL_In_or_out=deleted.In_Or_out FROM deleted
SELECT @DEL_forget_class = deleted.forget_class FROM deleted
DELETE PBrushTime
WHERE (ArriveTime = @DEL_AddBrushTime)
AND (EmpID = @DEL_EmpID)
AND (SepWno = '補')
AND (SEPUD = @DEL_In_or_Out)
AND (SepNe = 'N')
INSERT INTO PBrushTime(ArriveTime,EmpID,SepWno,SepUd,SepNe)
VALUES(@AddBrushTime,@EmpID,'補',@In_or_out,'N')
END