SQL 插入 - 删除表
Posted
技术标签:
【中文标题】SQL 插入 - 删除表【英文标题】:SQL inserted - deleted Tables 【发布时间】:2011-06-21 22:16:37 【问题描述】:我想更新一个表并从 SQL Server 的默认“插入”表中获取更新的记录。
以下查询的更新部分成功,但为什么查询的剩余“SELECT * FROM inserted”部分会引发错误为“Invalid object name 'inserted'。”?
use AdventureWorks
go
UPDATE TOP(50) Person.Address
SET City= 'PARIS'
SELECT * FROM inserted
【问题讨论】:
作为独立项,inserted
和 deleted
只能在触发器中使用。您似乎想要受update
影响的记录列表?在这种情况下,您需要按照 SqlACID 的建议使用 output
子句。
【参考方案1】:
你会想要这样做:
UPDATE TOP(50) Person.Address set
city='Paris' output inserted.*
除非您想要旧值,在这种情况下使用已删除。*
【讨论】:
或output inserted.*
等从受影响的行中获取所有列。
它引发错误:“Msg 334, Level 16, State 1, Line 1 如果语句包含没有 INTO 的 OUTPUT 子句,则 DML 语句的目标表 'Person.Address' 不能有任何启用的触发器子句。”
@Ahmet Altun - 您必须创建一个捕获输出的表变量,然后在更新语句之后查询该表。 blogs.msdn.com/b/sqlprogrammability/archive/2008/07/11/…以上是关于SQL 插入 - 删除表的主要内容,如果未能解决你的问题,请参考以下文章