如果触发器出现故障,则插入TABLE_A不应该失败。怎么样?

时间:2012-01-31 14:54:28

标签: sql-server

我有TABLE_A,而另一个数据库我有TABLE_B。 TABLE_A上有一个触发器,用于将TABLE_A中的插入复制到TABLE_B。如果触发器上的某些内容失败,则TABLE_A上的插入不会失败(我无法控制TABLE_A,可以删除或重命名列等等)。

我正在使用SQL Server 2005。

我尝试过TRY ... CATCH但它没有用。

感谢。

3 个答案:

答案 0 :(得分:3)

看看this other StackOverflow question

最终,触发器在隐式事务中运行,该事务与您要查找的内容相反。解决这个问题的另一种方法可能是你最好的选择。

答案 1 :(得分:3)

使用触发器 - 是一种原子操作 - 它可以完成而不会出错或整个操作失败(INSERT +触发器)。尝试使用其他变体,例如使用SP将记录添加到表中。

答案 2 :(得分:2)

我会将其移至异步式操作。对TABLE_A进行更改操作会对请求进行复制,以复制相应的记录并拥有一个单独的进程监视该队列。这样您就不会将复制过程绑定到insert事务中,只有复制操作的排队与insert事务相关联。