为啥我会得到额外的(1 行受影响)[重复]

Posted

技术标签:

【中文标题】为啥我会得到额外的(1 行受影响)[重复]【英文标题】:Why i am getting extra (1 row(s) affected) [duplicate]为什么我会得到额外的(1 行受影响)[重复] 【发布时间】:2013-12-26 12:52:52 【问题描述】:

我正在更新 sql server 表并只更新一条记录。但是我收到消息(1 行受影响)这么多次,为什么会这样? 我的查询是:

UPDATE V2HRMS.dbo.tbl_pm_employee
    SET LeavingDate='06-26-2013'
       ,Status=1 
WHERE EmployeeCode=3407

这只是我的知识。

【问题讨论】:

被标记为重复的问题不是同一个问题。在那个问题中,用户表示他们知道触发器不存在,因此这不是问题。这个问题没有提到它,并且提供了一个答案来解释如何查看触发器是否是问题的根源,结果证明是我的问题。上一个问题中没有答案概述了如何执行此操作,因为已经知道这不可能是原因。 【参考方案1】:

我认为您的表上定义了一些触发器尝试执行以下语句以查看您的表上是否定义了任何触发器:

SELECT SO.NAME, SC.[text]
FROM sysobjects SO INNER JOIN  syscomments SC
ON SO.ID = SC.ID
WHERE SO.[type] = 'TR'
AND SC.[text] LIKE '%tbl_pm_employee%'

找到触发器后,如果您不想在更新表时执行它,请使用以下语句禁用和启用它:

禁用触发器

DISABLE TRIGGER tr_Triggername ON tbl_pm_employee;

在这里进行更新

启用触发器

ENABLE TRIGGER tr_Triggername ON tbl_pm_employee;

【讨论】:

我试图将大量行从临时表插入主表,但一次只插入一行。这是我的问题。留下此评论,希望它会在搜索其他人时弹出。【参考方案2】:

这通常意味着您打开了actual execution plan option。执行计划作为额外的行集发送,导致额外(1 行受影响)消息

要禁用actual execution plan,请按Ctrl+M

【讨论】:

赞成:这就是我在输出日志中看到“额外”插入项目的原因。不错的提示!【参考方案3】:

您的表附加了一个触发器,因此每当您触发更新语句时,触发器也会被触发,因此您会收到一条额外的消息。

【讨论】:

那么为什么不是我更新的所有员工代码都收到了相同的额外消息。有些只收到了 1 条消息,而其他人收到了额外的消息??

以上是关于为啥我会得到额外的(1 行受影响)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会获得额外的文本节点作为根节点的子节点?

为啥冗余的额外范围块会影响 std::lock_guard 行为?

如何影响目标的顺序,为 Makefile.am 添加额外的步骤等?

为啥带有“额外”列的数据透视不能合并结果

graphql 为啥我需要在解析器参数中声明一个额外的参数

为啥我在 Swift 中的初始化程序不断收到“调用中的额外参数”