2012-03-05 68 views
0

我有扳机TSQL,我希望做两件事情:TSQL:触发/ ROLLBACK TRANSACTION错误

  1. 如果“锁定”栏中为TRUE,则应该ROLLBACK TRANSACTION
  2. 应该失败优雅而这样做

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

目前的代码回滚不需要的事务,但是当它返回这个错误:“此次交易结束在触发器中编辑。批处理已中止。”

是否有ROLLBACK TRANSACTION的触发器和正常失败的方法吗?

感谢。

回答

0

我想你会变成一个INSTEAD OF触发器,并选择执行或不建议进行更新,但它更多的代码,你必须手动进行更新。

+0

你好彼得, 感谢。你能进一步阐述我将如何执行或不执行更新? 我相对n新闻到SQL,所以我感谢你的帮助。 谢谢! – user1251000 2012-03-08 18:49:39

+0

是的,后触发器只是在操作之后调用,而不是触发器也必须执行操作本身。此链接可能有所帮助:[链接](http://www.mssqltips.com/sqlservertip/1804/using-instead-of-triggers-in-sql-server-for-dml-operations/)。 – 2012-03-08 18:59:18