在一个table1上写入触发器以更新table2并在table2上触发以更新table1

时间:2017-09-22 09:10:22

标签: sql-server

我有两个服务,我想在数据库表中保持同步,所以如果service1更新table1,那么我也想更新table2。如果service2更新table2,那么我也想更新table1。

我可以在table1上写一个触发器来更新table2,然后在table2上再次触发一个触发器来更新table1吗?这会创建一个循环吗?

1 个答案:

答案 0 :(得分:0)

  

我可以在table1上写一个触发器来更新table2并再次触发一个触发器   在table2上更新table1?这会创建一个循环吗?

这取决于服务器选项nested triggers

  

nested triggers选项控制AFTER触发器是否可以   级联。也就是说,执行启动另一个触发器的操作,   它会启动另一个触发器,依此类推。当嵌套触发器是   设置为0,AFTER触发器无法级联。 设置嵌套触发器时   为1(默认值),AFTER触发器可级联到多达32个   级别。无论设置如何,都可以嵌套INSTEAD OF触发器   这个选项。

但是你可以避免级联,无论如何都要在你的触发器中编写这段代码作为第一句话:

IF TRIGGER_NESTLEVEL() > 1 RETURN;