SQL Server 2005 或 2008:
我有一个 UPDATE 触发器,只有当某个状态字段发生更改时,它才会将新记录插入到同一个表中。
新记录确实被正确创建,因此 UPDATE 触发器起作用。但是以这种方式创建记录时,INSERT 触发器不会触发。
当我从触发器中提取插入语句并单独运行它时,INSERT 触发器会触发并正确执行,就像从表单创建记录时一样。
因此,两个触发器都按设计工作。我为测试设置了递归,但这不起作用。所以我想简单的问题是……这可以做到吗?
SQL Server 2005 或 2008:
我有一个 UPDATE 触发器,只有当某个状态字段发生更改时,它才会将新记录插入到同一个表中。
新记录确实被正确创建,因此 UPDATE 触发器起作用。但是以这种方式创建记录时,INSERT 触发器不会触发。
当我从触发器中提取插入语句并单独运行它时,INSERT 触发器会触发并正确执行,就像从表单创建记录时一样。
因此,两个触发器都按设计工作。我为测试设置了递归,但这不起作用。所以我想简单的问题是……这可以做到吗?
You need to turn on Nested Triggers for your server. Here's how:
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE ;
GO
EXEC sp_configure 'nested triggers', 1 ;
GO
RECONFIGURE;
GO
Be aware that this affects all databases, and can have unintended consequences (for triggers that were not intended to cascade like this).