首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >END transaction和COMMIT transaction之间的区别

END transaction和COMMIT transaction之间的区别
EN

Stack Overflow用户
提问于 2013-02-11 13:31:24
回答 6查看 37K关注 0票数 10

我正在尝试使用java来模拟一个数据库恢复子系统。然而,我有以下问题。

无论何时发出begin transaction,是否总是需要有一个end transaction?(如下例所示)

代码语言:javascript
复制
b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
e1    --- End txn 1

根据上面的示例,我不会发出Commit transaction语句。那么,我的事务是成功还是失败呢?如果上面的例子如下所示,

代码语言:javascript
复制
b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
c1    --- commit txn 1

end和commit的区别是什么?

如果您需要更多信息,请告诉我。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-02-11 13:46:46

你要么回滚一个事务,要么提交一个事务,我希望你没有把它与BEGIN和END块混淆,后者既不是事务,也不是事务。

我相信大多数数据库...不过,它仍然以回滚或提交结束。

希望这能有所帮助。

票数 17
EN

Stack Overflow用户

发布于 2013-02-11 14:29:35

BEGIN/END对代码块进行定界,而不控制事务。如果不在事务中,则每个语句将在一个自主事务中执行。通常,BEGIN/END与分支/循环指令(IF/WHILE)一起使用。

BEGIN TRANSACTION / COMMIT TRANSACTION表示事务的开始:此块中的每个语句都在同一事务中执行,不能单独提交或回滚。

票数 3
EN

Stack Overflow用户

发布于 2013-02-11 13:48:58

对于来自程序内部的SQL事务,END语句只需关闭事务即可。这意味着事务已经完成,不应该再发生任何事情。COMMIT语句实际上告诉数据库您希望事务更改是永久的。

如果处于“自动提交”模式,则不需要COMMIT语句,因为每个查询/语句都应该提交。

有关提交的更多信息,请访问here

如果您正在使用ODBC进行数据库连接,则可以在here中找到有关事务管理的信息。

另外,这个question之前也被问过。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14806435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档