-2

假设我有一个表 MyTab:

MyTab(ID, Col1, Col2, Col3,...)

然后我创建了一个删除触发器,如:

CREATE TRIGGER [dbo].[trg_MyTab_Delete]
ON [dbo].[MyTab]
For DELETE AS
begin

  INSERT INTO dbo.DeleteHistory(...)
  SELECT * FROM deleted d;

end

这适用于单行数据删除。但它不适用于批量删除,例如

delete from MyTab where ...

如果上面删除删除 10 行MyTab,触发器将插入 10*10 = 100 行DeleteHistory

如何解决此问题以使此触发器适用于单行和多行删除?

4

1 回答 1

0

它应该可以正常工作。请参阅此 SQL 小提琴进行演示: http ://sqlfiddle.com/#!6/90f47/3/2

你还有其他可疑的事情发生。也许您没有显示实际的触发器代码,也许您正在运行其他触发器或其他东西......很难猜到。

于 2013-09-26T19:23:33.903 回答