在更新语句上使用输出子句时出现奇怪的错误?

Mic*_*l A 3 sql t-sql sql-server sql-server-2008 sql-update

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

我有以下更新声明:

UPDATE  lease_deal.lease_budget
SET     change_type = NULL 
OUTPUT  inserted.*
WHERE   ISNULL(change_type, '') = ''
Run Code Online (Sandbox Code Playgroud)

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

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

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

Nic*_*aid 5

这个

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

说这个

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