SELECT然后UPDATE仅在SQL Server存储过程中作为UPDATE有效

时间:2015-02-14 08:22:55

标签: sql-server sql-server-2012

如果我的存储过程中有这样的代码。除了对返回的数据进行一些检查之外,SELECT和UPDATE之间没有代码,如果数据不正确则会发生THROW。:

SELECT col1 FROM b WHERE c = @c
UPDATE b SET col2 = 99 WHERE c = @c

我可以期望它执行与以下相同数量的数据访问:

UPDATE b SET col2 = 99 WHERE c = @c

请注意,我这样做的原因是我想在第一次选择之后检查rowcount并在开始UPDATE之前发生错误。如果没有性能差异,它只会使我的代码看起来更清洁。

1 个答案:

答案 0 :(得分:2)

有区别,它会做2个操作,但如果你需要col1值,可以这样做:

UPDATE b SET @col1 = co1, col2 = 99 WHERE c = @c

或者如果您需要更复杂的内容,例如前一个值,那么您可以使用输出

update b set col2 = 99 output deleted.col2 WHERE c = @c