在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;
答案 0 :(得分:1)
BEGIN和END定义一个语句块,用于控制流。 BEGIN TRANSACTION / COMMIT TRANSACTION / ROLLBACK TRANSACTION用于数据库事务。如果在启动事务之前数据库处于一致状态,那么在事务完成之后数据库将处于一致状态。如果提交事务之前发生故障,则对数据库所做的所有更改都将回滚到事务开始时的位置。