Извлечь последнее значение из поля id с автоматическим увеличением? - PullRequest
0 голосов
/ 02 февраля 2012

Я с этой ссылки

Предположим, у меня есть таблица:

FieldWorker{ ID, Name, WorkingArea}

И, ID - поле с автоинкрементом.

Теперь, предположим, я использую следующий код для вставки записей:

sqlComm.ExecuteNonQuery("INSERT INTO [FieldWorker]
       ([Name]
       ,[WorkingArea])
 VALUES
       (@Name
       ,@WorkingArea)");

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

И код вставки, и извлечение значения ID должны выполняться в одном объекте SqlTransaction.

Почему я должен использовать ExecuteScalar()

Ответы [ 3 ]

0 голосов
/ 02 февраля 2012

1) Вы можете установить идентификатор в качестве идентификатора (автоинкремент) 2) Вы можете получить последний идентификационный номер, вставленный следующим образом

@@IDENTITY

Ссылка Идентификационный номер SQL

0 голосов
/ 02 февраля 2012

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

Далее вы можете использовать Scope_Identity ().

Для получения дополнительной информации вы можете посетить этот блог

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

0 голосов
/ 02 февраля 2012

Для SQL Server 2000 вам нужно сделать это с SCOPE_IDENTITY и ExecuteScalar

sqlComm.ExecuteScalar("INSERT INTO [FieldWorker]
       ([ID]
       ,[Name]
       ,[WorkingArea])
 VALUES
       (@ID
       ,@Name
       ,@WorkingArea);
       SELECT SCOPE_IDENTITY()");

Для SQL Server 2005+ вы используете предложение OUTPUT

sqlComm.ExecuteScalar("INSERT INTO [FieldWorker]
       ([ID]
       ,[Name]
       ,[WorkingArea])
 OUTPUT INSERTED.ID
 VALUES
       (@ID
       ,@Name
       ,@WorkingArea);");
...