【发布时间】:2015-02-19 18:40:53
【问题描述】:
在一个表上,有一个删除触发器执行一些操作,然后在最后执行一个 select 语句,所以当你执行类似的操作时......
delete from mytable where id=1
它返回一个记录集。
有没有办法将该记录集的结果保存到临时表或其他东西中?我尝试过这样的事情:
declare @temptable table (returnvalue int);
insert into @temptable (returnvalue)
delete from mytable where id=1;
但显然这种语法不起作用。
【问题讨论】:
-
您可以将结果保存到真实表格中。但是您必须在触发代码中执行此操作。不在执行删除的代码中。
-
顺便说一句(因为此代码可能不受您的控制),让
DELETE触发器返回结果集是一个糟糕的主意。除了令人惊讶之外,它还使得将DELETE作为必须返回其自己的结果集的多语句代码的一部分发出是不可能的。如果您想将结果作为删除的一部分,请使用OUTPUTclause。 -
为什么?您真正的问题以及您的问题应该解决的问题是您这样做的原因。触发器的结果集是一件非常奇怪的事情,修复该设计缺陷应该是您的目标。您从删除触发器返回结果集的动机可能是什么?
标签: sql-server triggers sql-server-2012