3

我需要跨数据库同步两个表,只要其中一个发生更改,无论是更新、删除还是插入。这些表不相同。

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

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

如果不是,对于这种情况还有什么更好的选择?

先感谢您

问候丹尼尔。

4

1 回答 1

1

触发器会起作用,但有很多不同的选项可供考虑。

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

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

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

一般来说,很多人试图避免不必要的触发器,因为在数据库中做其他工作时很容易错过它们。这不会使它们变得糟糕,但在尝试解决问题时可能会导致有趣的时刻。

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

于 2013-05-01T14:25:15.310 回答