【问题标题】:SQL inserted - deleted TablesSQL 插入 - 删除表
【发布时间】:2023-03-26 07:43:01
【问题描述】:

我想更新一个表并从 SQL Server 的默认“插入”表中获取更新的记录。

以下查询的更新部分成功,但为什么查询的剩余“SELECT * FROM inserted”部分会引发错误为“Invalid object name 'inserted'。”?

use AdventureWorks
go

UPDATE TOP(50) Person.Address
SET  City= 'PARIS'

SELECT * FROM inserted

【问题讨论】:

  • 作为独立项,inserteddeleted 只能在触发器中使用。您似乎想要受update 影响的记录列表?在这种情况下,您需要按照 SqlACID 的建议使用 output 子句。

标签: c# sql sql-server triggers sql-update


【解决方案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/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多