Ссылка сгенерированного первичного ключа в сценарии SQL - PullRequest
0 голосов
/ 16 января 2009

Я пытаюсь создать группу записей в базе данных одним скриптом, и проблема, с которой я сталкиваюсь, заключается в том, как ссылаться на сгенерированный первичный ключ предыдущей записи, которую я создал.

Например, если я создал клиента, а затем попытался создать заказ для этого клиента, как я могу получить первичный ключ, сгенерированный для клиента?

Я использую SQLServer.

Ответы [ 3 ]

4 голосов
/ 16 января 2009

Если доступно в вашей версии, используйте взамен SCOPE_IDENTITY (). Безопаснее, чем @@ IDENTITY.

4 голосов
/ 16 января 2009

Вроде так:

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

EDIT:

Очевидно, это должно быть SCOPE_IDENTITY (), чтобы функционировать как положено с триггерами.

DECLARE @customerid int;
INSERT INTO customers(name) VALUES('Spencer');
SET @customerid = SCOPE_IDENTITY();
2 голосов
/ 16 января 2009

Если вы вставляете несколько строк одновременно, вы можете получить все удостоверения (например, для создания связанных записей) с помощью функции OUTPUT INTO в SQL Server 2005 или более поздней версии .

Это может избавить вас от необходимости писать циклы и курсоры и т. Д.

...