我想要更新表並從SQL Server的默認「已插入」表中獲取已更新的記錄。SQL插入 - 已刪除表
更新以下查詢的一部分是成功的,但爲什麼查詢的剩餘「SELECT * FROM inserted」部分會因爲插入「。」無效的對象名稱而引發錯誤?
use AdventureWorks
go
UPDATE TOP(50) Person.Address
SET City= 'PARIS'
SELECT * FROM inserted
我想要更新表並從SQL Server的默認「已插入」表中獲取已更新的記錄。SQL插入 - 已刪除表
更新以下查詢的一部分是成功的,但爲什麼查詢的剩餘「SELECT * FROM inserted」部分會因爲插入「。」無效的對象名稱而引發錯誤?
use AdventureWorks
go
UPDATE TOP(50) Person.Address
SET City= 'PARIS'
SELECT * FROM inserted
你會想這樣做。
UPDATE TOP(50) Person.Address set
city='Paris' output inserted.*
,除非你想要的舊值,在這種情況下使用刪除*
+1。快速回答。 – a1ex07
或'output inserted。*'等來獲取受影響行的所有列。 – GalacticCowboy
它引發錯誤:「Msg 334,Level 16,State 1,Line 1 如果語句包含不帶INTO子句的OUTPUT子句,則DML語句的目標表'Person.Address'不能有任何啓用的觸發器。 –
作爲單獨的項目,'inserted'和'刪除'只能在觸發器中使用。看起來您想要受'update'影響的記錄列表?在這種情況下,你需要像SqlACID所說的那樣使用'output'子句。 – GalacticCowboy