使用SCOPE_IDENTITY从SQL Server中的多个#tables向多个表添加数据

时间:2017-08-21 12:40:52

标签: sql sql-server database

我有两个包含数千条记录的临时表。以下是表结构。

 #TmpCity

 ID | CityName

 1  |  test


 #Location
 ID |  LocationName

 1  |  abc
 2  |  xyz
 3  |  etc

我有2个物理表城市位置具有相同的架构,其中位置表包含外键CityID,它将是城市表的自动递增主键。我需要将 #tmpCity 的数据添加到城市表,将 #tmpLocation 添加到位置表。

我不能使用 INSERT INTO 作为插入的每个城市记录我必须为 scopeIdentity 插入该城市的位置记录,因为我想要大量的记录避免像循环或游标一样逐行操作。 实现这一目标的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

INSERT INTO [dbo].[City]([CityName])
Select [CityName] from [dbo].[#TmpCity]

INSERT INTO [dbo].[Location]([CityId],[LocationName])
Select (select TOP(1) tab1.[CityId]  from [dbo].[City] as tab1
join  [dbo].[#City] as tab2 on tab1.[CityName]=tab2.[CityName]
where tab2.[ID]=loc.[CityId]),loc.[LocationName] from [dbo].[#Location] as loc