use*_*567 4 sql sql-server sql-server-2008
比如说我有,
create table product
(
ID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(10)
)
insert into product(Name) values('a')
insert into product(Name) values('b')
insert into product(Name) values('c')
insert into product(Name) values('d')
insert into product(Name) values('e')
create table #tempproduct
(
ID INT IDENTITY(1,1) NOT NULL,
Name VARCHAR(10)
)
declare @OutputAttributesValues table
(
[NewID] INT,
[OldID] INT
)
insert into #tempproduct(Name)
OUTPUT INSERTED.[ID],[ID] INTO @OutputAttributesValues
select [Name] FROM product
Run Code Online (Sandbox Code Playgroud)
请参阅我需要从输出中获取旧ID和新ID.但是这个sql给了我错误"无效的列名'ID'." http://sqlfiddle.com/#!3/a27b2/1
YS.*_*YS. 11
您不能使用传统INSERT
输出非插入字段.改为使用merge(要点:仅适用于数据库兼容性> = 100):
MERGE
#tempproduct AS t
USING(
SELECT
Name
, ID
FROM
product) AS s
ON (1=0)
WHEN NOT MATCHED
THEN INSERT (Name) VALUES (Name)
OUTPUT inserted.ID, s.ID INTO @OutputAttributesValues;
SELECT * FROM @OutputAttributesValues
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3806 次 |
最近记录: |