Как я могу получить последний вставленный первичный ключ? - PullRequest
4 голосов
/ 14 сентября 2009

Я использую SQL Server 2005 с таблицей с полем первичного ключа с типом varchar(40). Я должен получить значение первичного ключа последней вставленной записи. Я пытался scope_identity, но он не работает. Как я могу получить это?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Я нашел результат.

Код:

insert into T
output inserted.pk
values ('new item');
1 голос
/ 14 сентября 2009

Если ваш идентификатор - varchar, я полагаю, он не генерируется автоматически, поэтому вы должны знать его, прежде чем вставлять запись. Кстати, вы не можете просто выбрать свой идентификатор после вставки записи? Примерно так:

CREATE PROC InsertXXX( ... value parameters...)
AS 
BEGIN
INSERT .....
SELECT ID FROM MyTable
END

ОБНОВЛЕНО:

Если вы хотите узнать последнюю вставленную запись и ее идентификатор перед вставкой новой записи, это может быть немного сложнее в зависимости от значений идентификатора.

Если вы можете найти последнюю запись, отсортировав столбец идентификатора, вы можете сделать это следующим образом:

SELECT Max(ID) FROM myTable

Если нет, у вас может быть поле DateTime (например, CreationDate), которое содержит время вставки записи. Затем вы можете сделать следующее:

SELECT ID FROM MyTable WHERE CreationDate=(SELECT Max(CreationDate) FROM MyTable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...