【问题标题】:Assign Inserted Identity column to other table将插入的标识列分配给其他表
【发布时间】:2016-06-19 18:17:10
【问题描述】:

我要从临时表中插入表

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(THIS TABLE HAVE IDENTITY FILED OF COM_ID)

INSERT INTO COM ( ID,NAME,VALUE ) FROM SELECT ID ,NAME, VALUE FROM #TEMP_TBL 现在我的要求是我需要获取插入的记录标识值(com_id)和 必须参考其他表格

INSERT INTO TYPE
(
TYPE_ID,COM_ID,NAME,TOM_ID)
SELECT ID,COM_ID(FROM IDENTITY INSERTED IN ABOVE TABLE)NAME,TOM_ID FROM #TEMP_TBL
 ) 

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

【问题讨论】:

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


【解决方案1】:

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

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

从根本上说,您的问题是,我如何从行中获取列中的值? 人们很容易认为有一些神奇的方法可以找到 identity 的生成值插入行中的列,但在 SQL 中没有魔法,只有逻辑。要获得一个值,您必须选择它。

【讨论】:

    【解决方案2】:

    希望这会有所帮助。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2012-06-23
      相关资源
      最近更新 更多