在BeginTrans

时间:2018-12-15 23:39:35

标签: sql-server access-vba

我正在查看某人在删除表之前使用cn.BeginTrans的代码。代码看起来像这样

cn.BeginTrans
   //Update or delete table code
cn.CommitTrans

我玩过BeginTrans和UpdateTrans,并且了解它的作用。基本上就像版本控制,其中BeginTrans = git addgit commitUpdateTrans = git push。至少我是这样理解的。

我不了解的是Commitrans之后立即使用begintrans的事实。如果代码是根据this stackoverflow post提交的,则无法回滚。

如果要立即提交,为什么不使用Trans方法删除或更新表呢?

1 个答案:

答案 0 :(得分:2)

通过在自动提交模式下进行一次删除或更新(默认设置),就不必进行事务处理,因为每个语句都保证为全或无。但是,在有多个语句的情况下,使用显式事务以确保进行所有更改(提交)或不进行任何更改(回滚)很重要,以便维护一致的数据库。通常会在catch块中发出回滚(或使用{ "requests": [{ "name": "HSV Maloo", "make": "Holden", "year": 2006, "country": "Australia" }] } ),以确保在错误之后回滚更改。