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連結。

解决方案 »

  1.   

    觸發器代碼:
    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