powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Значение IDENTITY для добавленной записи..
11 сообщений из 11, страница 1 из 1
Значение IDENTITY для добавленной записи..
    #32023351
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать @@identity, но если после вставки записи сработает триггер и будет добавлена запись в другую таблицу с identity, то @@identity будет не верной.
Вроде где-то читал, что через OLE DB как-то можно получить значение identity именно для той таблицы, в которую добавляются данные...
Ни у кого не возникало такой проблемы?
Спасибо!
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023356
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если 2000 то SCOPE_IDENTITY
А если 7.0 то я пользую Max(ID) - конечно медленней чем @@identity
С уважением, Сергей.
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023365
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую 7.0
Но если кто-то успеет вставить запись до того, как будет вызван Max(ID), то получить ключ добавленной записи не удастся.
С уважением, Павел.
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023369
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ограничте свою вставку и получение Max(ID)
"скобочками" begin tran и commit tran
и никто ничего не изменит

Сергей.
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023373
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, это конечно, поможет , но max() - не самый эффективный способ..

Просто, где-то мелькала информация, что с помощью какого-то ухищрения с заданием параметров комманды OLE DB можно автоматом получать identity добавленной записи.
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023379
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно вообще отказаться от поля identity, в 6. был глюк для полей этого типа если на нем еще и ключ висел (до сервис пака не помню какого это было) и приходилось поддерживать свои счетчики - может Вам поможет такой способ, если совсем плохо.
А про OLE DB и такую возможность я ничего не слышал, мне кажется навряд ли это возможно - если не получается на сервере то тем более не получится и на клиенте, все же сервер первичен.

С уважением, Сергей.
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023410
nic_ii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а почему бы не устанавливать identity в триггере на добавление, ведь пока триггер не выполнился никто не сможет ничего нового добавить т.н. INTERNAL LOCK а там уж как вам больше нравится: хотите через MAX(ID), хотите через @@IDENTITY, а можете еще чего придумать
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023417
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 pavel

В триггере прочитайте @@identity в переменную, а потом после вставки записи в другую таблицу выполните такую команду:
select @YourIdentity as NewIdentity

В результате выполнения вставки (например с помощью процедуры) вы получите на выходе рекордсет со столбцом NewIdentity и одной строчкой со значением этого identity.

Max(ID) использовать нельзя, потому что или могут появиться одинаковые значения (если использовать неправильно) или будут тормоза (если использовать правильно)
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023421
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. Вы предлагаете в триггере перед обработкой других таблиц (и соответсвенно перед возможным изменением @@identity) сохранить значение @@identity? Спасибо, наверное это сработает.
Просто хотелось обойтись обойтись малой кровью - сделать все через OLE DB. Предполагается куча таблиц, в которых было бы удобно использовать identity для ключевых полей...
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023422
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 pavel
>сохранить значение @@identity?
Надеюсь Вы поняли меня правильно, сохранить в переменную

set @NewId = identity

insert в другие таблицы

select @NewId as NewId
...
Рейтинг: 0 / 0
Значение IDENTITY для добавленной записи..
    #32023425
SergD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IMHO, все же не стит возврашать выборку из тригера, и закладываться на это тоже не желательно, на этапе пректирования да и первичной эксплуатации не всегда известно где будут тригера а где и нет, а если другой разработчик добавит еще тригер...можно запросто получить нерабочую систему. но видимо это решение можно использовать на небольшом количестве таблиц когда оч. важно быстродействие и процедура добавления записи может позволить себе возвращать один рекордсет с новым значением ID для записи.

С уважением, Сергей.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Значение IDENTITY для добавленной записи..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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