只获取更新查询的结果
Posted
技术标签:
【中文标题】只获取更新查询的结果【英文标题】:Get only result of update query 【发布时间】:2014-07-25 12:45:50 【问题描述】:当我对我的 SQL Server 数据库执行更新时,我得到了受更新影响的行的结果AND某些触发器的受影响行。
例如,直接在数据库上执行更新:
UPDATE: (32 row(s) affected)
Trigger1: (1 row(s) affected)
Trigger2: (2 row(s) affected)
...
现在,当我执行_context.Database.ExecuteSqlCommand(query, params)
时,我总是得到所有这些结果的总和,在我的示例中,结果值为35
。
我只需要UPDATE
的结果,在我的示例中为32
。
是否有可能忽略触发器的结果?
【问题讨论】:
【参考方案1】:将SET NOCOUNT ON
放在触发器的第一行。
【讨论】:
我无法更改触发器,否则这将是一个不错的解决方案。 这是因为权限吗?还是有其他原因? 是的,它是一个大数据库,被多个程序使用。所以这并不容易;-) 好的。我懂了。所以这很难,但并非完全不可能。我在想别的办法。 恳求这是可能的。但尽管如此,我更喜欢其他解决方案。【参考方案2】:如果可以更改触发器,我认为@Alireza 的回答最有意义,但如果不能更改数据库调用以执行更新语句并返回@@ROWCOUNT
?
_context.Database.SqlQuery<int>("update xx ...; select @@ROWCOUNT");
我在 MSDN 上找不到任何文档,但 this question 确认 @@ROWCOUNT 不受触发器影响。
【讨论】:
好主意,我会试试的! 对于这种特殊情况,这可能是一个更好的解决方案 是的,在我的情况下是肯定的。否则,更清洁的解决方案是你的@Alireza 当然,我们是来解决your
问题的。没有其他人的:)以上是关于只获取更新查询的结果的主要内容,如果未能解决你的问题,请参考以下文章