-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 ...
如果上述刪除MyTab
刪除10行,觸發器會插入10 * 10 = 100行到DeleteHistory
。
如何解決這個問題,使這個觸發器適用於單行和多行刪除?
該觸發器實際上已經看起來像它應該處理多行刪除就好了。你確定這正是你的觸發器的樣子嗎?如果不同,我們無法解決我們看不到的問題。 –
我懷疑你的實際觸發器說'INSERT ... SELECT d。* FROM deleted d,deleted'或'FROM deleted d,MyTab WHERE d.key = MyTab.key'。 –