TSQL:触发/回滚事务错误
Posted
技术标签:
【中文标题】TSQL:触发/回滚事务错误【英文标题】:TSQL: Trigger / ROLLBACK TRANSACTION error 【发布时间】:2012-03-05 23:23:45 【问题描述】:我在 TSQL 中有一个触发器,我想做两件事:
-
如果“Locked”列为 TRUE,则应该 ROLLBACK TRANSACTION
这样做时应该优雅地失败
AFTER UPDATE
AS
BEGIN
IF (SELECT COUNT(*) FROM deleted WHERE Locked = 1)>0
ROLLBACK TRANSACTION
END
当前代码回滚不需要的事务,但当它回滚时会返回此错误:“事务在触发器中结束。批处理已中止。”
有没有办法在触发器中回滚事务并优雅地失败?
谢谢。
【问题讨论】:
【参考方案1】:我想您可以更改为 INSTEAD OF 触发器,并选择执行或不执行更新,但它的代码更多,因为您必须手动执行更新。
【讨论】:
您好彼得,感谢您的建议。您能否进一步详细说明我将如何执行或不执行更新?我对 SQL 比较陌生,因此感谢您的帮助。谢谢! 是的,after 触发器只是在操作之后调用,而不是触发器也必须自己执行操作。此链接可能会有所帮助:link.以上是关于TSQL:触发/回滚事务错误的主要内容,如果未能解决你的问题,请参考以下文章