Joh*_*ohn 4 sql-server triggers
SQL Server 2005+
我有一个带INSTEAD OF INSERT触发器的视图.在触发器的主体内部,我想使用带有OUTPUT引用两个INSERTED表的子句的语句:
INSERTED表INSTEAD OF INSERTINSERTED该OUTPUT子句的内部表MSDN 说:
如果在触发器主体内部使用包含OUTPUT子句的语句,则必须使用表别名来引用触发器插入和删除的表,以避免使用与OUTPUT关联的INSERTED和DELETED表重复列引用.
但别名似乎不起作用:
CREATE TRIGGER v_insert ON v
INSTEAD OF INSERT
AS BEGIN
INSERT INTO t (a, b, c)
OUTPUT inserted.a, inserted.b, outer_inserted.d INTO t_prime (a, b, d)
SELECT a, b, c
FROM inserted as outer_inserted
END
Run Code Online (Sandbox Code Playgroud)
它产生错误"多部分标识符"outer_inserted.d"无法绑定.这是否意味着我想要做的是不可能的?
我读它是因为在你访问触发器INSERTED的FROM中需要INSERTED别名.
OUTPUT子句中的INSERTED 只能引用插入到t中的数据.
所以你不能拥有outer_inserted.d你的OUTPUT子句
你也不能这样做,这就是我读它的方式
INSERT INTO t (a, b, c)
OUTPUT inserted.a, inserted.b INTO t_prime (a, b)
SELECT a, b, c
FROM inserted --no alias = **FAIL**
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1645 次 |
| 最近记录: |