2011-06-21 80 views
2

我想要更新表並從SQL Server的默認「已插入」表中獲取已更新的記錄。SQL插入 - 已刪除表

更新以下查詢的一部分是成功的,但爲什麼查詢的剩餘「SELECT * FROM inserted」部分會因爲插入「。」無效的對象名稱而引發錯誤?

use AdventureWorks 
go 

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

SELECT * FROM inserted 
+0

作爲單獨的項目,'inserted'和'刪除'只能在觸發器中使用。看起來您想要受'update'影響的記錄列表?在這種情況下,你需要像SqlACID所說的那樣使用'output'子句。 – GalacticCowboy

回答

6

你會想這樣做。

UPDATE TOP(50) Person.Address set 
city='Paris' output inserted.* 

,除非你想要的舊值,在這種情況下使用刪除*

+0

+1。快速回答。 – a1ex07

+0

或'output inserted。*'等來獲取受影響行的所有列。 – GalacticCowboy

+0

它引發錯誤:「Msg 334,Level 16,State 1,Line 1 如果語句包含不帶INTO子句的OUTPUT子句,則DML語句的目標表'Person.Address'不能有任何啓用的觸發器。 –