SQL触发更新表之前可以对其进行引用

时间:2018-08-15 14:25:25

标签: sql sql-server sql-server-2008

我们有一个旧版SQL Server,该服务器暂时是主表(将对此表进行所有更新,并且它将通过触发器更新其他所有内容)。我们正在努力用新系统替换旧系统。在新系统中,我们已将数据拆分为多个表。

旧版系统无法为同一个客户处理多个地址(送货地址,账单地址等)。问题是,我们在旧版表上的触发器正在为我们的新系统和核心系统在Core数据库上提供多个表表正在提供计费数据库的表。输入客户,然后输入地址以引用客户。

帐单表具有相同的设置。更新核心客户地址表时,触发器将尝试将记录插入“开票客户地址表”中。但是,Core Client Table的触发器尚未插入Billing Client表中,因此账单地址表正在尝试引用尚不存在的客户端。 DatabaseSetup

插入到“客户”表中的事务需要在启动“客户地址”表的事务之前提交。但只有一个触发器来自旧数据库。

谢谢!

1 个答案:

答案 0 :(得分:0)

触发器是复制或传播的错误选择。将所有更改为适当的存储过程,以安排每分钟运行的作业。您会延迟1分钟,但要保持正直。

如果这不是一种选择,请在尝试插入地址之前,修改您的地址触发器以检查客户是否存在于帐单中。如果计费表中没有客户,则存储在临时表中。然后,扩展触发器以更新帐单中的客户端,以在插入客户端后检查临时表以查找该特定客户端的未决地址,将其正确插入地址中并将其从临时表中删除。