Sql server 是否在SQL Server中作为事务开始和结束
在SQL Server中使用SQL脚本 如果我有一块开始。。。结束Sql server 是否在SQL Server中作为事务开始和结束,sql-server,transactions,Sql Server,Transactions,在SQL Server中使用SQL脚本 如果我有一块开始。。。结束 BEGIN UPDATE Table1 SET Column1 = 1 UPDATE Table2 SET Column2 = 2 UPDATE Table3 SET Column3 = 3 END 在这种情况下,这是否意味着所有3条update语句都应该一起传递 我的意思是,如果第一次和第二次更新成功,但第三次失败,这是否意味着所有3次更新都将回滚?或仅更新表1和表2,不更新表3 换句话说 上面的脚本是否等同于 UP
BEGIN
UPDATE Table1
SET Column1 = 1
UPDATE Table2
SET Column2 = 2
UPDATE Table3
SET Column3 = 3
END
在这种情况下,这是否意味着所有3条update语句都应该一起传递
我的意思是,如果第一次和第二次更新成功,但第三次失败,这是否意味着所有3次更新都将回滚?或仅更新表1和表2,不更新表3
换句话说
上面的脚本是否等同于
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;
或者相当于
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;
开始和结束定义一个语句块,用于控制流。开始事务/提交事务/回滚事务用于数据库事务。如果数据库在事务启动前处于一致状态,则在事务完成后,数据库将处于一致状态。如果提交事务之前出现故障,则对数据库所做的所有更改都将回滚到事务开始时。总结:没有开始/结束是完全不等效的。@DaleBurrell您的意思是它不是事务,因此,如果第一次更新成功,第三次更新失败,它仍然会在不回滚的情况下更新第一次添加begin/end对内部T-SQL的原子性没有任何影响。由于应答状态开始/结束用于控制流,例如允许if语句包含要执行的多个表达式。