我正在查看某人在删除表之前使用cn.BeginTrans
的代码。代码看起来像这样
cn.BeginTrans
//Update or delete table code
cn.CommitTrans
我玩过BeginTrans和UpdateTrans,并且了解它的作用。基本上就像版本控制,其中BeginTrans
= git add
和git commit
和UpdateTrans
= git push
。至少我是这样理解的。
我不了解的是Commitrans
之后立即使用begintrans
的事实。如果代码是根据this stackoverflow post提交的,则无法回滚。
如果要立即提交,为什么不使用Trans方法删除或更新表呢?
答案 0 :(得分:2)
通过在自动提交模式下进行一次删除或更新(默认设置),就不必进行事务处理,因为每个语句都保证为全或无。但是,在有多个语句的情况下,使用显式事务以确保进行所有更改(提交)或不进行任何更改(回滚)很重要,以便维护一致的数据库。通常会在catch块中发出回滚(或使用{
"requests": [{
"name": "HSV Maloo",
"make": "Holden",
"year": 2006,
"country": "Australia"
}]
}
),以确保在错误之后回滚更改。