我正在尝试使用java来模拟一个数据库恢复子系统。然而,我有以下问题。
无论何时发出begin transaction,是否总是需要有一个end transaction?(如下例所示)
b1 --- Begin txn 1
r1(X) --- Read item X using txn 1
e1 --- End txn 1根据上面的示例,我不会发出Commit transaction语句。那么,我的事务是成功还是失败呢?如果上面的例子如下所示,
b1 --- Begin txn 1
r1(X) --- Read item X using txn 1
c1 --- commit txn 1end和commit的区别是什么?
如果您需要更多信息,请告诉我。
发布于 2013-02-11 13:46:46
你要么回滚一个事务,要么提交一个事务,我希望你没有把它与BEGIN和END块混淆,后者既不是事务,也不是事务。
我相信大多数数据库...不过,它仍然以回滚或提交结束。
希望这能有所帮助。
发布于 2013-02-11 14:29:35
BEGIN/END对代码块进行定界,而不控制事务。如果不在事务中,则每个语句将在一个自主事务中执行。通常,BEGIN/END与分支/循环指令(IF/WHILE)一起使用。
BEGIN TRANSACTION / COMMIT TRANSACTION表示事务的开始:此块中的每个语句都在同一事务中执行,不能单独提交或回滚。
https://stackoverflow.com/questions/14806435
复制相似问题