在SQL Server Management Studio中运行Update语句之前,我想看看它会影响多少行,所以我知道我的逻辑是合理的。有什么办法吗?
我尝试过几次运行执行计划,运行后当我将鼠标悬停在绿色更新图标上时会显示受影响的行,但有时会显示该行数据的20.5行,这没有任何意义。
有什么想法吗?
答案 0 :(得分:4)
估计的执行计划将根据统计信息为您提供受影响的行,因此在这种情况下它不会真正帮助您。
我建议复制UPDATE语句并将其转换为SELECT。运行它以查看返回的行数,并获得已更新的行数的答案。你可以发布SQL吗?
答案 1 :(得分:4)
几种方式:
1)将UPDATE调整为SELECT COUNT(*): e.g。
UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
变为:
SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
快速调整注释UPDATE ... SET ...部分为SELECT COUNT(*)
...或
2)在BEGIN TRANSACTION .... ROLLBACK TRANSACTION块中运行UPDATE
答案 2 :(得分:2)
如果我有如下声明:
UPDATE
MT
FROM
My_Table MT
INNER JOIN Some_Other_Table SOT ON
....
WHERE
....
然后得到计数我将用以下内容替换开头:
SELECT
COUNT(DISTINCT MT.<primary key column>)
FROM
My_Table MT
INNER JOIN Some_Other_Table SOT ON
....
WHERE
....
另一种选择是简单地将其包装在事务中并立即发出ROLLBACK。它可能需要更长的时间,你最终会锁定表,但你不会冒UPDATE和SELECT之间的拼写错误的风险。
答案 3 :(得分:1)
不是真的,除了使用与更新语句相同的条件进行选择计数(*)。