同步两个表,最佳实践

时间:2013-04-30 11:05:15

标签: tsql triggers synchronization

我需要在更新,删除或插入时,无论何时更改数据库,都要跨数据库同步两个表。表格不完全相同。

到目前为止,我能找到的最简单,最好的解决方案是添加SQL触发器。

我慢慢开始添加,似乎工作正常。但在我继续完成之前,我想确定这是一个好主意吗?而且总的来说是好的做法。

如果没有,这个场景有什么更好的选择?

提前谢谢

此致 丹尼尔。

1 个答案:

答案 0 :(得分:0)

触发器可以使用,但有很多不同的选项可供考虑。

是否通过存储过程对这些表进行了所有数据修改?如果是这样,请考虑将逻辑放在存储过程中而不是触发器中。

更新必须是实时的吗?如果没有,请考虑定期同步表而不是触发器的作业。但是,删除可能会变得棘手。并非不可能,只是很棘手。

我们遇到过一种情况,表格非常相似,但列名或订单略有不同。在这种情况下,我们创建了一个原始表的视图,让应用程序使用视图而不是表的第二个副本。我们也可以使用同义词一次指向原始表,但这要求表结构相同。

一般来说,很多人都试图避免不必要的触发器,因为在数据库中进行其他工作时,它们太容易被遗漏。这并不能使它们变坏,但在尝试解决问题时可能会导致有趣的时间。

在您的场景中,我可能会在继续触发之前简要探讨其他选项。只需注意级联触发器效果,其中一次更新导致第二个表更新,将更新传递回第一个表,然后传递给第二个,等等。您可以使用嵌套级别稍微保护这一点。否则,您将面临达到最大递归级别并抛出错误的风险。