我特意创建了这个例子来代表我的问题。
我创建了这样的表:
CREATE TABLE a
(
id INT
)
Run Code Online (Sandbox Code Playgroud)
然后我像这样创建了 2 个AFTER TRIGGER:
CREATE TRIGGER insert_a
ON a AFTER INSERT
AS
BEGIN
INSERT INTO a VALUES (1)
END
GO
CREATE TRIGGER insert_a2
ON a AFTER INSERT
AS
BEGIN
INSERT INTO a VALUES(2)
END
GO
Run Code Online (Sandbox Code Playgroud)
之后我插入到表中:
INSERT INTO a VALUES (0)
Run Code Online (Sandbox Code Playgroud)
我得到了结果:
消息 217,级别 16,状态 1,过程 insert_a2,第 5 行 [批处理起始行 0]。
超出最大存储过程、函数、触发器或视图嵌套级别(限制为 32)。
我认为这里存在周期性情况。触发器内部的插入,一次又一次地触发触发器。那会发生吗?
我想知道里面发生了什么?
有没有办法解决这个问题,但仍然保持完整的 2 AFTER INSERT触发器?
疯狂的情况。