削除前トリガーを作成したい。テーブルからレコードを削除すると、そのレコードを履歴テーブルに挿入する必要があります。SQL Server でこれを行うにはどうすればよいですか?
質問する
83093 次
4 に答える
37
この状況では、通常の "after" トリガーを実行する方がよいでしょう。これは、この種の状況に対する最も一般的なアプローチです。
何かのようなもの
CREATE TRIGGER TRG_AUD_DEL
ON yourTable
FOR DELETE
AS
INSERT INTO my_audit_table (col1, col2, ...)
SELECT col1, col2...
FROM DELETED
テーブルからレコード (またはレコード!) が削除されると、削除された行がテーブルに挿入されますmy_audit_table
。DELETED
テーブルは、削除直前のレコードを含む仮想テーブルです。
また、トリガーは削除ステートメントの暗黙的なトランザクションの一部として実行されるため、削除が失敗してロールバックすると、トリガーもロールバックすることに注意してください。
于 2012-05-04T06:34:14.447 に答える
16
使用することもできますINSTEAD OF DELETE
CREATE TRIGGER dbo.SomeTableYouWhatToDeleteFrom
ON dbo.YourTable
INSTEAD OF DELETE
AS
BEGIN
-- Some code you want to do before delete
DELETE YourTable
FROM DELETED D
INNER JOIN dbo.YourTable T ON T.PK_1 = D.PK_1
END
于 2012-05-04T06:36:06.167 に答える