我有一个首先更新的sql语句,然后选择:
UPDATE myTable
SET field1=@someValue
WHERE field2=@someValue2
SELECT 1 returnValue
使用此语句的结果的过程期望单个结果集,足够简单。
问题出现是因为更新触发器被添加到生成结果集的表中,即它选择如下:
SELECT t_field1, t_field2, t_field3 FROM t_table
显而易见的解决方案是分割声明。不幸的是,现实世界的实施是复杂的,如果可能的话应该避免。触发器也是nessecary,无法禁用。
有没有办法压制更新的结果,只返回select语句中的值?
答案 0 :(得分:4)
在SQL Server 2012中不推荐从触发器返回结果集的功能,并且将在未来版本中删除(甚至可能在SQL Server 2016中,但可能在下一版本中删除)。更改触发器以其他方式返回数据。如果仅需要调试,请使用PRINT而不是SELECT。如果由于某些其他原因需要它,请将数据插入临时表并从调用过程执行SELECT(仅在需要时)。