更新多列时,是否包含.WRITE子句的UPDATE?

时间:2013-04-16 07:11:49

标签: sql sql-server

以下语句是原子操作吗?

UPDATE [table1]
SET column1=@val1, column2.WRITE(@val2, NULL, 0) WHERE table1_id=@id

还是应该放在事务中以确保在出现错误情况时不更新任何列或两列?

列定义为:

column1 int not null, 
column2 varbinary(max) not null 

2 个答案:

答案 0 :(得分:2)

这是一个声明。在SQL Server中,每个语句都带有一个隐含的事务。如果你想了解更多细节,这是另一个答案。

What does a transaction around a single statement do?

答案 1 :(得分:1)

以下是Autocommit Transactions上的MSDN参考,其中指出:

  

自动提交模式是SQL Server数据库的默认事务管理模式   发动机。每个Transact-SQL语句都会在提交或回滚时提交   完成。如果语句成功完成,则提交;如果   它会遇到任何错误,它会被回滚。

未记录使用UPDATE .WRITE的

Modifying Large-Value (max) Data in ADO.NET会影响UPDATE语句事务。