在SQL Server中开始和结束是否作为事务工作

时间:2019-09-17 01:09:00

标签: sql-server transactions

在SQL Server的SQL脚本中

如果我有一个Begin ... End

BEGIN

UPDATE Table1
SET Column1 = 1

UPDATE Table2
SET Column2 = 2

UPDATE Table3
SET Column3 = 3

END

在这种情况下,这是否意味着所有3条update语句都应一起传递?

我的意思是,如果第一次和第二次更新成功,但第三次失败,这是否意味着所有3次更新都将回滚?或Table1&Table2仅更新,而没有更新Table3

换句话说

上面的脚本是否等同于

UPDATE Table1
SET Column1 = 1

UPDATE Table2
SET Column2 = 2

UPDATE Table3
SET Column3 = 3

或等同于

BEGIN TRANSACTION;  

UPDATE Table1
SET Column1 = 1

UPDATE Table2
SET Column2 = 2

UPDATE Table3
SET Column3 =  3

COMMIT;  

1 个答案:

答案 0 :(得分:1)

BEGIN和END定义一个语句块,用于控制流。 BEGIN TRANSACTION / COMMIT TRANSACTION / ROLLBACK TRANSACTION用于数据库事务。如果在启动事务之前数据库处于一致状态,那么在事务完成之后数据库将处于一致状态。如果提交事务之前发生故障,则对数据库所做的所有更改都将回滚到事务开始时的位置。