插入时输出插入值和表值

时间:2013-04-19 14:17:05

标签: sql-server sql-server-2008 tsql

我正在插入MS SQL Server 2008中的表(它是来自同一个表的值的副本),并且想要获取插入的输出值。我想获取select语句的id值(下例中的t.id),INSERTED.id工作得很好

create table tmp.tbl_inserted (fromId int, toId int)

INSERT INTO mytable (name)
OUTPUT t.id, INSERTED.id INTO tmp.tbl_inserted
SELECT t.name FROM mytable t

提前致谢

1 个答案:

答案 0 :(得分:5)

您不能直接从INSERT

执行此操作
  

from_table_name

     

是一个列前缀,用于指定DELETE,UPDATE或MERGE语句的FROM子句中包含的表,该语句用于指定要更新或删除的行。

请注意,未提及INSERT

你需要做的就是作弊并使用MERGE

MERGE INTO mytable m
USING (name,id FROM mytable) t ON 1=0
WHEN NOT MATCHED THEN INSERT (name) VALUES (t.name)
OUTPUT t.id, INSERTED.id INTO tmp.SizeCurveGroup_inserted
;