相关疑难解决方法(0)

TSQL:触发器中的Try-Catch事务

我试图在使用Microsoft Server 2005的触发器中放置一个try-catch语句.

BEGIN TRANSACTION
BEGIN TRY
    --Some More SQL
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
    IF (XACT_STATE()) = -1
    BEGIN
        ROLLBACK TRANSACTION;
    END;
END CATCH
Run Code Online (Sandbox Code Playgroud)

问题是,如果try-catch块捕获了某些内容,我不希望触发器失败.目前,我收到错误"交易在触发器中结束.批次已中止." 如果交易失败.如何让触发器优雅地失败?


另外,如果我删除了该事务,我会收到错误"事务在触发器中注定.批处理已中止.".

BEGIN TRY
    --Some More SQL
END TRY
BEGIN CATCH
    return
END CATCH
Run Code Online (Sandbox Code Playgroud)

有没有办法解决?

t-sql sql-server triggers

14
推荐指数
3
解决办法
5万
查看次数

标签 统计

sql-server ×1

t-sql ×1

triggers ×1