Bog*_*nov 1 trigger sql-server-2012
我的同事问我很简单,但对我来说很难的问题:
如果我deleted
在INSTEAD OF
触发器中有 10 条记录的表并且我删除了其中的 8 条记录,那么我deleted
在AFTER
触发器中的表中有多少条记录?
我认为它应该是 10,但我不确定。
非常容易测试。
CREATE TABLE T(X INT);
GO
INSERT INTO T
SELECT TOP 10 1
FROM sys.all_objects;
GO
CREATE TRIGGER TR1 ON T INSTEAD OF DELETE AS DELETE TOP (8) FROM T;
GO
CREATE TRIGGER TR2 ON T AFTER DELETE AS SELECT COUNT(*) FROM DELETED;
GO
DELETE FROM T;
DROP TABLE T;
Run Code Online (Sandbox Code Playgroud)
答案8
这是正确的行为。after 触发器应反映实际删除的行。如果您有一个审计触发器记录了 10 次删除,而只有 8 次发生,这显然是不正确的。
归档时间: |
|
查看次数: |
63 次 |
最近记录: |