powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / получение последнего значения IDENTITY поля конкретной таблицы
11 сообщений из 11, страница 1 из 1
получение последнего значения IDENTITY поля конкретной таблицы
    #32822592
kolyan05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеет место быть следующая проблема:
процедура P делает вставку в таблицу A, у которой есть IDENTITY поле,
при вставке выполняется триггер, который вставляет запись в таблицу B,
у которой тоже есть IDENTITY поле.
Надо в процедуре P после вставки записи в таблицу A получить вставленное значение IDENTITY поля, но @@identity содержит вставленное значение для IDENTITY поля таблицы B.
Как получить значение вставленного поля в таблицу A, не делая SQL - запрос?
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32822667
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32822718
kolyan05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, что не указал СУБД. Это - ASA и ASE.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32822760
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ASA переменная @@IDENTITY имеет область видимости, поэтому ничего делать не надо - в триггере и после INSERT @@IDENTITY будет указывать нужные значения. В ASE не знаю как, знаю в MSSQL это разрулили с помощью специальных функций.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32823242
kolyan05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, с ASA понятно. А как это сделать в ASE?
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32823253
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSДля ASA переменная @@IDENTITY имеет область видимости, поэтому ничего делать не надо - в триггере и после INSERT @@IDENTITY будет указывать нужные значения.

Уточню - только начиная с 7-й версии. Я тогда сильно обрадовался, когда они
так сделали.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32824316
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун
Уточню - только начиная с 7-й версии. Я тогда сильно обрадовался, когда они
так сделали.
Вот-вот, а тоя я было хотел возмутиться. На АСА6, области видимости нет. И приходится извращаться, например, делать триггер "бефоре". Такой перебивает идентити до вставки.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32826006
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боюсь , что в ASE это вообще никак не сделать. @@identity работает на уровне сессии, там - identity от последней вставленной записи. Если бы не было триггера, то было бы все в порядке, а вот с триггером ...
Предлагаю выбросить триггер, заменив его процедурой (все равно ее можно будет всегда вызвать).
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32827442
kolyan05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivБоюсь , что в ASE это вообще никак не сделать. @@identity работает на уровне сессии, там - identity от последней вставленной записи.
Вот, что я нашёл на сайте Sybase: http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@ebt-link;hf=0;pt=19681?target=%25N%15_26892_START_RESTART_N%25#X
Это manual по Transact SQL для ASE. Если я всё правильно понял, то из раздела, на который указывает ссылка следует, что @@identity ИМЕЕТ область видимости.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32828578
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это имеешь в виду ?
The value for @@identity within a stored procedure or trigger does not affect the value outside the stored procedure or trigger. For example:
Ну тогда все хорошо.
...
Рейтинг: 0 / 0
получение последнего значения IDENTITY поля конкретной таблицы
    #32829331
kolyan05
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сегодня протестировал proc+trigger+@@identity на ASA 7.0, ASE(не помню версию) и MSSQL2000 (на нём вместо @@identity использую SCOPE_IDENTITY()). Всё работает!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / получение последнего значения IDENTITY поля конкретной таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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