我可以创建一个触发器来触发另一个触发器吗



我有两个表,表A和表B。我在A上有一个触发器,输入是表B的列。那么,当我更新表A时会发生什么:表B也会更新吗?

如果我也想更新表B,该怎么办?

纯粹基于您的示例(如果我理解正确的话(,这听起来像是在UPDATE级联中指定的外键关系。

示例代码:

ALTER TABLE [dbo].[Foo]  WITH CHECK ADD  CONSTRAINT [FK_FooBar] FOREIGN KEY([BarID])
REFERENCES [dbo].[Bar] ([BarID])
ON UPDATE CASCADE

这将对dbo中的BarID进行编辑。Foo表还迭代到它在dbo中引用的BarID字段。条形

然而,如果我们使用触发器,就不能从触发器中明确地触发触发器。但是,您可以通过满足触发器条件来执行使触发器激发的操作。如果设置了服务器选项(默认为true(以允许触发器激活其他触发器,则将执行辅助触发器。

请注意,该选项仅适用于AFTER触发器,它最多可以被"链接"/嵌套32次。而不是INSTEAD OF触发器。

Msdn文章:

  • https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-the-nested-triggers-server-configuration-option?view=sql-服务器版本15
  • https://learn.microsoft.com/en-us/sql/relational-databases/triggers/create-nested-triggers?view=sql-服务器版本15

相关内容