How can I fire a trigger BEFORE a delete in T-SQL 2005?

前端 未结 3 551
别那么骄傲
别那么骄傲 2021-01-01 17:01

How can I fire a trigger BEFORE a delete in T-SQL 2005? The FOR actually fires AFTER an event and they seems no BEFORE argument in the TRIGGER function. The INSTEAD OF is no

相关标签:
3条回答
  • 2021-01-01 17:41

    You can't. What you can do is check the DELETE table and undo the delete if you need to do so.

    Here's the Sequence of events:

    • Send DELETE Command to SQL Server
    • Item is removed from the table
    • OnDelete Trigger Fires Perform your
    • Logic If Logic fails/passes/whatever, undo delete
    0 讨论(0)
  • 2021-01-01 17:43

    You can't. But you can perform a rollback in an AFTER DELETE trigger.

    0 讨论(0)
  • 2021-01-01 18:01

    You can use the INSTEAD OF option, just explicitly delete the rows at the end. For example:

    CREATE TRIGGER dbo.My_Table_Delete_Instead_Of_Trigger
    ON dbo.My_Table
    INSTEAD OF DELETE
    AS
    BEGIN
    
         -- Do some stuff here
    
         DELETE T
         FROM DELETED D
         INNER JOIN dbo.My_Table T ON T.PK_1 = D.PK_1 AND T.PK_2 = D.PK_2
    END
    

    This assumed a primary key made up of columns PK_1 and PK_2.

    0 讨论(0)
提交回复
热议问题