2013-10-04 6 views
2

извините, если этот вопрос немой, но я не могу найти ответ. Просто начать с SQL. Я читал ответы для Get the last inserted row ID (with SQL statement), и кажется, что SCOPE_IDENTITY - это «последнее вставленное значение». Эта операция заблокирована сразу после вставки, потому что если нет, то другая вновь вставленная строка может стать тем, что вставлено сразу после вставки, на которой я собирался получить идентификатор.проблема синхронизации с SCOPE_IDENTITY()

Спасибо за помощь!

+4

Он дает вам ** последний вставленный идентификатор ** для вашей ** области ** - например если другой пользователь/соединение что-то вставляет, вы не получите этот идентификатор - вы получите ** последний идентификатор, который вы вставили **. –

+0

Я вижу, спасибо! Извините, я, видимо, даже не знал, что искать! Это использование SCOPE имеет большой смысл сейчас! – yifanwu

+0

Убедитесь, что у вас есть последние исправления для вашей версии SQL-сервера. У некоторых есть довольно раздражающие ошибки с помощью SCOPE_IDENTITY(). – StingyJack

ответ

5

Чтобы получить последнюю вставленную информацию строки через SQL запрос у вас есть три варианта:

@@IDENTITY: она возвращает последнее значение идентификатора генерируется для любой таблицы в текущей сессии, во всех областях

SCOPE_IDENTITY: она возвращает последнее значение идентичности, сгенерированное для любой таблицы текущего сеанса и текущей области.

IDENT_CURRENT: она возвращает последнее значение идентификатора созданного для конкретной таблицы в любой сессии и любого масштаба

+1

Спасибо тонны за объяснение! – yifanwu

Смежные вопросы