3

首先,根据我的经验,很多人不熟悉输出。如果是这样,此链接非常方便:SQL Server 的隐藏功能

我有以下更新声明:

UPDATE  lease_deal.lease_budget
SET     change_type = NULL 
OUTPUT  inserted.*
WHERE   ISNULL(change_type, '') = ''

虽然我认为这会为我返回更新的记录,但我收到以下错误:

消息 334,级别 16,状态 1,第 9 行 如果该语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表“lease_deal.lease_budget”不能有任何启用的触发器。

我知道我可以成功地创建一个临时表并使用输出语句将更新的记录重定向到那里,但是为什么我不能将它返回到 IDE?我确定(确定)我以前能够做到这一点,但似乎无法在任何地方找到合适的例子来帮助我理解我做错了什么。当您正在更新的列上有触发器时,这根本不可能吗?

4

1 回答 1

5

这个

http://msdn.microsoft.com/en-au/library/ms177564.aspx

说这个

如果在未指定 INTO 关键字的情况下指定了 OUTPUT 子句,则 DML 操作的目标不能在其上为给定的 DML 操作定义任何启用的触发器。例如,如果在 UPDATE 语句中定义了 OUTPUT 子句,则目标表不能有任何启用的 UPDATE 触发器。

于 2013-04-11T01:34:42.723 回答