我有TABLE_A,而另一个数据库我有TABLE_B。 TABLE_A上有一个触发器,用于将TABLE_A中的插入复制到TABLE_B。如果触发器上的某些内容失败,则TABLE_A上的插入不会失败(我无法控制TABLE_A,可以删除或重命名列等等)。
我正在使用SQL Server 2005。
我尝试过TRY ... CATCH但它没有用。
感谢。
答案 0 :(得分:3)
看看this other StackOverflow question。
最终,触发器在隐式事务中运行,该事务与您要查找的内容相反。解决这个问题的另一种方法可能是你最好的选择。
答案 1 :(得分:3)
使用触发器 - 是一种原子操作 - 它可以完成而不会出错或整个操作失败(INSERT +触发器)。尝试使用其他变体,例如使用SP将记录添加到表中。
答案 2 :(得分:2)
我会将其移至异步式操作。对TABLE_A进行更改操作会对请求进行复制,以复制相应的记录并拥有一个单独的进程监视该队列。这样您就不会将复制过程绑定到insert事务中,只有复制操作的排队与insert事务相关联。