gpt4 book ai didi

c# - 如何使用 ADO.NET 实现嵌套 SQL 事务?

转载 作者:行者123 更新时间:2023-11-30 14:19:29 25 4
gpt4 key购买 nike

我需要在 .NET 中使用 ADO.NET 实现嵌套事务。

情况如下:

--> Start Process (Begin Transaction)       

--> Do DB things

--> Begin Transaction for step 1
--> Step 1
--> Commit transaction for step 1

--> Begin transaction for step 2
--> Step 2
--> Rollback transaction for step 2

--> etc ...

--> Do DB things


--> End Process(Commit or Rollback ALL commited steps --> a.k.a the process)

这可以用事务范围来完成吗?谁能举个例子?

此外,我需要该过程适用于SQL Server 2005 和 Oracle 10g 数据库...事务作用域是否适用于两种数据库引擎?

编辑:注意这种情况可能会发生:

第 1 步已提交,Step2回滚Step3 已提交。

进程已提交

(Step1和Step3将数据存入数据库,step2)

另一方面...

第 1 步已提交,Step2回滚Step3 已提交。

进程回滚。

NO DATA IS COMMITED 到数据库

注意:没有可用的数据库架构或域值

最佳答案

您可以在 TSQL 中通过保存点(SQL Server 上的 SAVE TRAN)执行此操作,但坦率地说,我不推荐这样做。您不能通过 TransactionScope 执行此操作,因为任何中止都是终止的(只要树中的任何事务指示失败,整个事务就会回滚)。

个人:先查资料,只做有效的 Action 。如果失败,那就是终端 - 将其回滚。可能将工作分成可以真正隔离提交(或回滚)的原子单元。

关于c# - 如何使用 ADO.NET 实现嵌套 SQL 事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com