【问题标题】:TSQL: Trigger / ROLLBACK TRANSACTION errorTSQL:触发/回滚事务错误
【发布时间】:2012-03-05 23:23:45
【问题描述】:

我在 TSQL 中有一个触发器,我想做两件事:

  1. 如果“Locked”列为 TRUE,则应该 ROLLBACK TRANSACTION
  2. 这样做时应该优雅地失败

    AFTER UPDATE 
    AS
    BEGIN
     IF (SELECT COUNT(*) FROM deleted WHERE Locked = 1)>0
     ROLLBACK TRANSACTION
    END
    

当前代码回滚不需要的事务,但当它回滚时会返回此错误:“事务在触发器中结束。批处理已中止。”

有没有办法在触发器中回滚事务并优雅地失败?

谢谢。

【问题讨论】:

    标签: sql sql-server tsql triggers


    【解决方案1】:

    我想您可以更改为 INSTEAD OF 触发器,并选择执行或不执行更新,但它的代码更多,因为您必须手动执行更新。

    【讨论】:

    • 您好彼得,感谢您的建议。您能否进一步详细说明我将如何执行或不执行更新?我对 SQL 比较陌生,因此感谢您的帮助。谢谢!
    • 是的,after 触发器只是在操作之后调用,而不是触发器也必须自己执行操作。此链接可能会有所帮助:link.
    猜你喜欢
    • 1970-01-01
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 2012-01-09
    相关资源
    最近更新 更多