如何在插入select语句后获取主键值

时间:2014-01-08 18:34:17

标签: sql-server-2008

我需要创建一个包含许多步骤的SQL脚本。

首先,我需要将数据插入父表。

如何获取主键值列表

以下是我正在尝试执行的示例。

MyParentTable MyParentID PK COL1, COL2, COL3

- 将值插入父母表

insert into MyParentTable(col1,col2,col3)
select SDATA1,SDATA2,SDATA3
from ExampleTables

我想获取新条目的列表。

怎么做?

重要说明:请考虑MyParentTable可以包含数据。

2 个答案:

答案 0 :(得分:2)

insert into dbo.MyParentTable(col1,col2,col3)
output inserted.identity_column_name
select SDATA1,SDATA2,SDATA3
from dbo.ExampleTables;

如果涉及外键,您可能必须使用@table变量进行临时保留。

DECLARE @t TABLE(id INT);

insert into dbo.MyParentTable(col1,col2,col3)
output inserted.identity_column_name INTO @t
select SDATA1,SDATA2,SDATA3
from dbo.ExampleTables;

SELECT id FROM @t;

答案 1 :(得分:2)

我会使用OUTPUT clause(它需要SQL Server 2005):

DECLARE @Orders TABLE 
(
 order_nbr  INT PRIMARY KEY,
 tname      VARCHAR(25),
 prod_type  INT
);

DECLARE @OrderNumbers TABLE (order_nbr INT PRIMARY KEY);

INSERT INTO @Orders (order_nbr, tname, prod_type)
OUTPUT inserted.order_nbr INTO @OrderNumbers    
SELECT 1,'', '1'
UNION ALL SELECT 2,'', '1'
UNION ALL SELECT 3,'', '2';

SELECT * FROM @OrderNumbers;