sql-server – TSQL:Try-Catch Transaction in Trigger
发布时间:2020-05-24 17:05:07 所属栏目:MsSql 来源:互联网
导读:我试图使用Microsoft Server 2005在触发器中放置一个try-catch语句. BEGIN TRANSACTIONBEGIN TRY --Some More SQL COMMIT TRANSACTIONEND TRYBEGIN CATCH IF (XACT_STATE()) = -1 BEGIN ROLLBACK TRANSAC
|
我试图使用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
问题是如果某些东西被try-catch块捕获,我不希望触发器失败.目前,我收到错误“事务在触发器中结束,批次已被中止”.如果事务失败.如何让触发器正常失败? 另外,如果我删除事务,我得到错误“事务注定在触发器中.批处理已被中止”. BEGIN TRY
--Some More SQL
END TRY
BEGIN CATCH
return
END CATCH
有没有办法解决? 解决方法在我的经验中,在触发器中捕获的任何错误将回滚整个事务;您可能可以使用保存事务.我想你需要看看在“一些更多的sql”中发生了什么,并确定是否可以在其周围编写case / if语句来停止错误.你可能会根据你在做什么来使用一个save transaction并捕获它 在你的代码中这样的东西 SAVE TRANSACTION BeforeUpdate;
BEGIN TRY
--Some More SQL
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION BeforeUpdate;
return
END CATCH (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server-2005 – 在SQL Server 2005中的视图上创建全文索
- 如何在PL / SQL中每天分组?
- sql – 存储过程中IF语句的括号
- SQL Server SQL 无法装载DLL Microsoft原因(无法修改sa密码
- doctrine2 – 如何在学说2中创建数据库
- SQL Server 批量插入与更新两种解决方案分享(存储过程)
- sql – Linq存储过程超时但SSMS快速
- sql – 具有可以为null的列的测试不等式
- sql-server-2008 – 在SQL Server 2008中导出表
- sql-server-2008 – 在SQL Server 2008中的日期和时间之间进
