爲什麼INSERT表別名在OUTPUT/INSERTED行中未被識別?INSERT表別名在OUTPUT子句中未被識別
編輯:鏈接表需要填充新的@Data_Table.Id(INSERTED.id,works)和@ NewData_Table.ObjectId(errors)。因此可以創建一個'鏈接表',並且可以創建一個從@Data_Table到@Tmp_Link_Table的外鍵關係。
編輯:
--Expected Output
--ObjectId DataId
--11 3
--12 4
--13 5
--14 6
DECLARE @NewData_Table TABLE
( [Data] VARCHAR(50) NOT NULL,
ObjectId INT NOT NULL)
DECLARE @Tmp_Link_Table TABLE
( ObjectId INT NOT NULL,
DataId INT NOT NULL)
DECLARE @Data_Table TABLE
( Id INT NOT NULL Identity(1,1),
Data VARCHAR(50) NOT NULL)
-- create new objects
INSERT INTO @NewData_Table (ObjectId, Data) VALUES (11,'Data 1')
INSERT INTO @NewData_Table (ObjectId, Data) VALUES (12,'Data 2')
INSERT INTO @NewData_Table (ObjectId, Data) VALUES (13,'Data 3')
INSERT INTO @NewData_Table (ObjectId, Data) VALUES (14,'Data 4')
SELECT * FROM @NewData_Table
-- create some data
INSERT INTO @Data_Table (Data) VALUES ('Data One')
INSERT INTO @Data_Table (Data) VALUES ('Data Two')
[email protected]_Table BEFORE
SELECT * FROM @Data_Table
--Q !:爲什麼 「消息4104,級別16,狀態1,第27行的多個部分組成的標識符 」d.ObjectId「 無法綁定。」?
INSERT INTO @Data_Table (Data) OUTPUT d.ObjectId, INSERTED.Id INTO @Tmp_Link_Table (ObjectId, DataId)
SELECT d.Data
FROM @NewData_Table AS d
[email protected]_Table AFTER
SELECT * FROM @Data_Table
--Linked table from INSERT
SELECT * FROM @Tmp_Link_Table
REF:OUTPUT Clause (Transact-SQL)
將其更改爲'OUTPUT INSERTED.Data,INSERTED.Id' – TriV
編輯解釋爲什麼INSERTED.Data不答案。 – OzBob
接受的答案也張貼在https://social.msdn.microsoft.com/Forums/sqlserver/en-US/466e90f4-b4b9-401a-8043-d3309ea0e7b0/question-of-insert-with-output-clause?forum = transactsql在2011年:-) – OzBob