Cha*_*une 3 trigger sql-server insert t-sql
假设我有两个表,表 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);
Run Code Online (Sandbox Code Playgroud)
错误:
消息 217,级别 16,状态 1,过程表 BToA 超出
最大存储过程、函数、触发器或视图嵌套级别(限制 32)。
此外,任何行都不会插入到任一表中。