Sql-Server
表 A 觸發對錶 B 的插入,表 B 觸發對錶 A 的插入,會發生什麼?
假設我有兩個表,表 A 和表 B。表 A 有一個插入觸發器,可以將記錄插入表 B。表 B 有一個插入觸發器,可以將記錄插入表 A。在這種情況下會發生什麼?這兩個觸發器是否會不斷地向表中插入記錄,直到數據庫填滿?這種情況發生的次數是否有限制?
除了明顯的“呃,不要那樣做”……這大約需要兩分鐘來測試。
USE tempdb; GO CREATE TABLE dbo.TableA(ID INT); CREATE TABLE dbo.TableB(ID INT); GO CREATE TRIGGER dbo.TableAToB ON dbo.TableA FOR INSERT AS INSERT dbo.TableB SELECT ID FROM inserted; GO CREATE TRIGGER dbo.TableBToA ON dbo.TableB FOR INSERT AS INSERT dbo.TableA SELECT ID FROM inserted; GO INSERT dbo.TableA(ID) VALUES(1);
錯誤:
消息 217,級別 16,狀態 1,過程 TableBToA 超出
最大儲存過程、函式、觸發器或視圖嵌套級別(限制 32)。
此外,任何一個表中都沒有插入任何行。