我有以下查询,应该更新716条记录:
USE db1
GO
UPDATE SAMP
SET flag1 = 'F', flag2 = 'F'
FROM samp INNER JOIN result ON samp.samp_num = result.samp_num
WHERE result.status != 'X'
AND result.name = 'compound'
AND result.alias = '1313'
AND sample.standard = 'F'
AND sample.flag2 = 'T';
但是,当从SSMS中的查询窗口在SQL Server 2005数据库上运行此查询时,我收到以下三条消息:
716 row(s) affected
10814 row(s) affected
716 row(s) affected
那么为什么我得到3条消息(而不是单个更新语句的正常消息)以及10814可能引用的是什么?这是我需要更新的生产数据库,所以我不想在不知道答案的情况下提交这些更改:-)谢谢。
答案 0 :(得分:9)
这可能是由[samp]表上的触发器引起的。如果你去查询 - >查询选项 - >执行 - >高级并检查SET STATISTICS IO,您将看到在运行查询时正在更新哪些其他表。
答案 1 :(得分:1)
您还可以使用SSMS中的对象浏览器来查找触发器。打开表节点,找到表,打开表节点,然后打开触发器。这个方法的好处是你可以将触发器编写脚本到新的查询窗口,看看触发器在做什么。
答案 2 :(得分:0)
这可能是因为你的桌子上有一个触发器。 此命令将显示正在发生的事情。
SET STATISTICS IO {ON |关闭}