在SQL脚本中引用生成的主键

时间:2009-01-16 00:53:22

标签: sql sql-server primary-key

我正在尝试使用单个脚本在数据库中创建一堆条目,而我遇到的问题是如何引用我创建的上一个条目的生成主键。

例如,如果我创建了一个客户,然后尝试为该客户创建订单,我该如何获得为客户生成的主键?

我正在使用SQLServer。

3 个答案:

答案 0 :(得分:4)

像这样:

DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = @@IDENTITY;

修改

显然它需要是SCOPE_IDENTITY()才能按预期使用触发器。

DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = SCOPE_IDENTITY();

答案 1 :(得分:4)

如果您的版本中有,请改用SCOPE_IDENTITY()。比@@ IDENTITY更安全。

答案 2 :(得分:2)

如果您一次插入多行,则可以使用OUTPUT INTO feature of SQL Server 2005 or later获取所有身份(例如,用于创建相关记录)。

这可以避免你必须编写循环和游标等。