powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить ID вставленной записи?
9 сообщений из 9, страница 1 из 1
Как получить ID вставленной записи?
    #32053092
Kostya.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с identity ID, т.е. генерится автоматом ;)
Как узнать ID только что вставленной записи?
что бы продолжить с ним (ID) работу?
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053096
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@@IDENTITY
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053099
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для MS SQL2000 более корректно работает SCOPE_IDENTITY
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053161
pima
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@@identity - это, конечно, правильно, НО:
надо иметь в виду, что это значение глобальное для всей базы по всем пользователям и таблицам. Т. е. если вы хотите получить именно своё значение, то надо использовать транзакцию:
Код: plaintext
1.
2.
3.
begin tran
insert into........
..... @Переменная=@@IDENTITY....
commit tran
а то влезет ещё кто-то после вашего инсёрта - и получите его @@identity, а не ваше.
И еще. Инсёрт в триггере на инсёрт приводит к сбою @@identity, т. е. будет возвращено значение для строки, вставленной триггером, а не вами
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053166
Фотография Shura_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 pima:
насчет "глобального значения по всем пользователям и таблицам" - это Вы загнули! @@IDENTITY работает только внутри сессии, так что транзакция никакая нафиг не нужна. А с триггерами действительно надо быть осторожным, но только тогда, когда они сами вставляют записи в таблицу со столбцом identity. Но как написал Jimmi используйте функцию SCOPE_IDENTITY() и проблем с триггерами не будет.
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053194
Kostya.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем.
Переменная IDENTITY действительно действует только внутри одно сессии.
Как раз то что нужно :)
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053259
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользуйте SCOPE_IDENTITY().
Для вас разницы никакой (на 6 символов больше), а надёжно работает в 100% ситуаций.
С @@IDENTITY внутри одно сессии могут быть всякие горбухи особенно при доступе к данным через единый сервер (например IIS).
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053374
keystop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем полох IDENT_CURRENT('table_name') ??
...
Рейтинг: 0 / 0
Как получить ID вставленной записи?
    #32053389
Oleg_Martynov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>а чем полох IDENT_CURRENT('table_name') ??
BOL:
IDENT_CURRENT
Returns the last identity value generated for a specified table in any session and any scope.

Т.е. добавляем запись. В следующую миллисекунду из другой сессии вставляется 100 записей. Смотрим IDENT_CURRENT('table_name') и получаем ID 101 записи, а не нашей.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как получить ID вставленной записи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]