Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 结束事务和提交事务之间的区别_Sql_Sql Server_Relational Database - Fatal编程技术网

Sql 结束事务和提交事务之间的区别

Sql 结束事务和提交事务之间的区别,sql,sql-server,relational-database,Sql,Sql Server,Relational Database,我试图用java模拟一个数据库恢复子系统。不过,我有以下问题 无论何时发出开始事务,是否总是需要有结束事务?(如下面的示例) 根据上面的例子,我没有发出Commit事务语句。那么,我的交易是成功还是失败?如果上面的示例如下所示 b1 --- Begin txn 1 r1(X) --- Read item X using txn 1 c1 --- commit txn 1 结束和提交之间有什么区别 如果您需要更多信息,请告诉我。回滚事务或提交事务。我希望您不要将其与BEGIN和END

我试图用java模拟一个数据库恢复子系统。不过,我有以下问题

无论何时发出开始事务,是否总是需要有结束事务?(如下面的示例)

根据上面的例子,我没有发出Commit事务语句。那么,我的交易是成功还是失败?如果上面的示例如下所示

b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
c1    --- commit txn 1
结束和提交之间有什么区别


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

回滚事务或提交事务。我希望您不要将其与BEGIN和END block混淆,BEGIN和END block不是事务,与事务无关

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


希望这有帮助。

使用“结束”来结束过程/函数。执行语句非常重要
“提交”用于永久保存事务中的所有更改。
例如,您使用SQL语句创建或删除了一个表,您需要提交更改。

请在此阅读有关Commit语句的更多信息。

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

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

可以找到有关提交的更多信息

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

以前也有人问过这个问题。

请参考此了解详细信息

引述: 开始交易和结束交易开始和结束交易。它们不指定新的代码块;它们只标记交易边界


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


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

开始和结束事务的确切命令名取决于您使用的特定数据库(很遗憾)

例如:

在中,使用开始/开始事务开始,使用结束/结束事务/提交/提交事务结束事务


在中,您使用启动事务/BEGIN/BEGIN WORK和提交/提交WORK进行相同的操作。

SQL Server(T-SQL)没有命令
END TRANSACTION
。标记属于标记区域,而不是有问题的标题。我正在尝试模拟数据库恢复子系统。因此,用户事务被指定为begin、read、write、end、commit和abort。我必须为每个用户事务编写一个算法。我不确定写什么作为“结束”的算法。我觉得用户发出的“end”没有用,因为用户发出的是“commit”或“abort”。所以,我想知道是否真的需要“结束”,你错了。交易没有结束,要么提交,要么回滚(这也不是问题的目标平台)。哦,我的错,我的意思是过程。很抱歉,谢谢你的回复。实际上,在正在实现的数据库子系统中,每当遇到END时,我都必须在该事务的日志文件中写入更改。遇到提交后,实际更改应该写入磁盘块。
b1    --- Begin txn 1
r1(X) --- Read item X using txn 1
c1    --- commit txn 1