繁体   English   中英

SQL从多个存储过程插入回滚提交

[英]SQL Rollback a Commit from Multiple Stored procedure inserts

我有C#代码(wcf)连接到数据库,并插入了一个完整的“报告”,包括地址表,人员表等,所有这些都必须通过调用存储过程来完成。 附带说明一下,某些存储过程可能会多次调用(因为我们在报告中可能有多个人和多个地址,等等)

插入地址(通过调用spInsertAddress)插入人(通过调用spInsertPerson)插入项(调用另一个存储过程)将引发错误(可能字符太多,或者为日期/时间字段插入了错误的值)

自存储过程以来,我该如何撤消所有更改?

在MSDN上找到了这篇文章 ,解释了如何通过C#添加事务,并使用try / catch可以提交或回滚事务

您可以从C# (MSDN)调用BeginTransaction,然后根据需要提交或回滚事务。 但是您必须确保存储过程本身不会执行COMMIT或ROLLBACK语句。 请注意,Sql Server不像您期望的那样支持嵌套事务。

根据我的经验,在提交事务之后就不会回滚。 我建议您重写调用插入的代码,以确保您管理发送的值,这样就不会出现错误。 最佳实践是在保存到数据库之前验证所有数据。 您没有提到正在使用的数据库,某些数据库具有不同的可用选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM