将Inserted Identity列分配给其他表

时间:2016-06-19 18:17:10

标签: sql sql-server-2008 sql-server-2005

我要从临时表中插入表

SELECT * FROM 'raw_data' WHERE CONTAINS ('date', "42")>0

现在我将这个临时表记录插入到另一个表COM(这个表已经标识为COM_ID的IDENTITY)

SELECT D.ID,D.NAME,D.VALUE,T.TOM_ID * INTO #TEMP_TBL FROM DOM D INNER JOIN TOM T ON D.ID =T.ID 现在我的要求是我需要插入记录标识值(com_id)和 必须参考其他表

INSERT INTO COM
(
ID,NAME,VALUE
)
FROM SELECT ID ,NAME, VALUE FROM #TEMP_TBL

每个表中都插入了多条记录。如何找到插入的标识列并将其分配给其他表。

2 个答案:

答案 0 :(得分:0)

COM中的行必须由com_id之外的其他内容唯一标识,或者您必须愿意订购它们并处理重复。根据该自然键从COM中选择:

select com_id from COM where name = ?  -- or similar 

从根本上说,你的问题是,我如何在一行的列中获取值?有一种诱惑,认为有一种神奇的方法可以找到{{1的生成值插入行中的列,但在SQL中没有魔法,只有逻辑。要获得值,您必须选择它。

答案 1 :(得分:0)

希望这有帮助。

SELECT Id, Com_Id, Name, Tom_ID FROM #TEMP_TBL temp INNER JOIN COM C ON C.ID = TBL.ID