END事务和COMMIT事务之间的区别

时间:2013-02-11 05:31:24

标签: sql sql-server relational-database

我正在尝试使用java模拟数据库恢复子系统。但是,我有以下问题。

每当发出开始交易时,是否总是需要结束交易? (如下例所示)

b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
e1    --- End txn 1

根据上面的例子,我没有发布Commit事务声明。那么,我的交易会成功还是失败?如果上面的例子如下,

b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
c1    --- commit txn 1

结束和提交有什么区别?

如果您需要更多信息,请与我们联系。

6 个答案:

答案 0 :(得分:12)

要么ROLLBACK一个Transaction或COMMIT一个Transaction.I希望你不要把它与BEGIN和END块混淆,这不是一个交易,而且根本不涉及Transaction。

我相信大多数数据库......它仍然以ROLL BACK或COMMIT结束。

希望这有帮助。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

'结束'用于结束过程/功能。执行该语句很重要。
“提交”用于永久保存交易中的所有更改 例如,您使用SQL语句创建或删除了表,您需要提交更改
请在此处阅读有关承诺声明的更多信息 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4010.htm

答案 3 :(得分:0)

对于来自类似程序内部的SQL事务,END语句只是关闭事务。意味着交易已经完成,不应再发生任何事情。 COMMIT语句实际上告诉数据库您希望事务更改为PERMANENT。

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

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

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

之前也曾问过这个question

答案 4 :(得分:0)

开始和结束事务的确切命令名称取决于您使用的特定数据库(不幸的是)。

例如:

SQLite中,您使用BEGIN / BEGIN TRANSACTION开始,并使用END / END TRANSACTION / COMMIT / COMMIT TRANSACTION结束交易。

MySQL中,您使用START TRANSACTION / BEGIN / BEGIN WORK和COMMIT / COMMIT WORK。

答案 5 :(得分:-1)

有关详细信息,请参阅此LINK

  

QUOTE:   BEGIN TRANS和END TRANS开始和结束交易。他们不指定新的代码块;它们只标记交易边界。