我正在尝试使用一些更改后的值来复制表中的某些行,并且还需要存储一个旧的(将丢失的)id,以便以后进行进一步处理。我正在尝试使用输出子句存储该信息,但是SQL Server抛出以下错误:
Msg 4104 <...> The multi-part identifier could not be bound.
这是我要复制数据的表(稍作修改以减少列数):
Create Table Elements
(
id int Identity(0,1) not null, --PK
name varchar(50) not null,
modelID int not null, --FK
constraint PK_Elements primary key (id)
);
这是我的查询:
declare @outputTable table
(
oldElementID int,
id int,
name varchar(50),
modelID bigint
);
Insert into Elements
(name, modelID)
Output e.id as oldElementID,
Inserted.id,
Inserted.name,
Inserted.modelID into @outputTable
select e.name, @newModelID
from Elements as e
where e.modelID = @oldModelID
注意:@oldModelID和@newModelID是预先声明和设置的。
我不确定我的逻辑是否错误,因此我必须采用其他方法(但是我确信可以这样做)。或者,如果我只是犯了一个错误,那就不能完全把手指放在上面。
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
我重新创建了这样的问题:
CREATE TABLE #a (a INT, b INT)
INSERT INTO #a (a,b) VALUES (42, 43)
INSERT INTO #a (a, b)
OUTPUT a.a, a.b, inserted.a, inserted.b
SELECT a.b, a.a
FROM #a a
插入操作会产生以下消息:
Msg 4104, Level 16, State 1, Line 7
The multi-part identifier "a.a" could not be bound.
Msg 4104, Level 16, State 1, Line 7
The multi-part identifier "a.b" could not be bound.
那是因为INSERT命令无法看到我在select命令中使用的别名“ a”。