假设我有一个表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 ...
如果上面的删除从MyTab
中删除10行,则触发器会在DeleteHistory
中插入10 * 10 = 100行。
如何解决此问题以使此触发器适用于单行和多行删除?
答案 0 :(得分:0)
它应该正常工作。请参阅此SQL小提琴进行演示: http://sqlfiddle.com/#!6/90f47/3/2
你还有其他可疑的东西。也许您没有显示实际的触发器代码,也许您正在运行其他触发器或其他东西......很难猜测。