在SQL Server触发器中使用Commit

时间:2014-11-18 05:51:48

标签: sql sql-server tsql transactions

目前我正在制定一项要求,要求将输入记录记录到临时表中。

要求总结如下:

  • Web服务将发送一个请求,该请求会将记录插入到1级临时表(StagingTable1)中。

  • StagingTable1上的数据库触发器将处理记录的有效性并引发错误

  • 此错误消息被确认为对其他终端系统的Web服务响应。

我的挑战是在另一个临时表StagingTable2中跟踪这些失败的记录。但是触发器中的RAISERROR导致整个事务回滚。

如何实现这一目标?

注意:我尝试过临时表,但它不起作用。据我所知,在SQL Server中无法进行Pragma_autonomuos次事务。

1 个答案:

答案 0 :(得分:0)

您可以使触发器将记录放入StagingTable2 - 或者不记录,因此缺少该记录将表明验证失败。您甚至可以将错误描述和行'密钥放入其他表中,以便您始终知道哪些未能通过。

或者,如果您的服务器彼此相距足够远,您可以使用Service Broker。