How to create a before delete trigger in SQL Server?

前端 未结 3 1548
终归单人心
终归单人心 2020-12-06 09:03

I want to create a before delete trigger. When I delete a record from a table that record has to be inserted into a history table. How can I do this in SQL Server?

3条回答
  •  情话喂你
    2020-12-06 09:43

    In this situation, you're probably better off doing a regular "after" trigger. This is the most common approach to this type of situation.

    Something like

    CREATE TRIGGER TRG_AUD_DEL
    ON yourTable
    FOR DELETE
    AS
         INSERT INTO my_audit_table  (col1, col2, ...)
         SELECT col1, col2...
         FROM DELETED 
    

    What will happen is, when a record (or records!) are deleted from your table, the deleted row will be inserted into my_audit_table The DELETED table is a virtual table that contains the record(s) as they were immediately prior to the delete.

    Also, note that the trigger runs as part of the implicit transaction on the delete statement, so if your delete fails and rolls back, the trigger will also rollback.

提交回复
热议问题