从触发器中抑制结果集

时间:2015-06-12 17:17:25

标签: sql sql-server tsql sql-server-2012

我有一个首先更新的sql语句,然后选择:

  UPDATE myTable 
  SET field1=@someValue
  WHERE field2=@someValue2

  SELECT 1 returnValue 

使用此语句的结果的过程期望单个结果集,足够简单。

问题出现是因为更新触发器被添加到生成结果集的表中,即它选择如下:

 SELECT t_field1, t_field2, t_field3 FROM t_table

显而易见的解决方案是分割声明。不幸的是,现实世界的实施是复杂的,如果可能的话应该避免。触发器也是nessecary,无法禁用。

有没有办法压制更新的结果,只返回select语句中的值?

1 个答案:

答案 0 :(得分:4)

在SQL Server 2012中不推荐从触发器返回结果集的功能,并且将在未来版本中删除(甚至可能在SQL Server 2016中,但可能在下一版本中删除)。更改触发器以其他方式返回数据。如果仅需要调试,请使用PRINT而不是SELECT。如果由于某些其他原因需要它,请将数据插入临时表并从调用过程执行SELECT(仅在需要时)。