![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Иван Человеков |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 11.3.2006 Где: Минск Репутация: нет Всего: 1 |
Подскажите пожалуйста, как узнать ИД записи, которую только что вставил. Вот как я это делаю:
Дело в том, что в это время другой пользователь может вставить ещё одну запись, а при поиске максимальной записи, оба будут ссылаться на одну и ту же запись. |
|||
|
||||
Иван Человеков |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 11.3.2006 Где: Минск Репутация: нет Всего: 1 |
Спасибо разобрался:
|
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
Ну если твой столбец c ID в таблице описан как IDENTITY, то правильнее так:
Но ты должен понимать что возвращаеться ID последнего перед вызовом @@IDENTITY запроса: "Returns the last-inserted identity value." |
|||
|
||||
Balu |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2002 Репутация: нет Всего: 1 |
@@IDENTITY глобално на всю базу для текущей сессия Scope_Identity() в рамках текущей хранимки (тригера) Для примера попробуйте использовать @@IDENTITY в случае когда на INSERT установлен тригер с операцией добавления в другую таблицу с автоинкрементным полем. Вы будете неприятно удивлены, так как получите значение из второй таблички. |
||||
|
|||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
Balu, дя я знаю это. но что у нас про тригеры никто не говорил изначально
![]() |
|||
|
||||
Balu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2002 Репутация: нет Всего: 1 |
Это хорошо, что ты знаешь ![]() Но у меня была ситуация, когда я вставлял логирование изменений спустя полгода, как был разработан модуль. Логирование сделал через тригер, в бизнес логиу хранимок не лазил. И каково было мое удивление, когда вся логика работы полетела к чертям собачим. С тех пор не люблю я это идентити :-( и не советую другим юзать. |
|||
|
||||
ALKS |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
SCOPE_IDENTITY() и IDENT_CURRENT() появились только в MS SQL 2000. а раньше выбора особого не было
![]() И появились они именно из-за описанной тобой проблемм с триггерами что прямо было написано в "What's New". Но избегание использования тригееров есть очень хороший постулат, так что наши системы совершенно спокойно жили до этих новшеств и живут без них и дальше. ![]() |
|||
|
||||
Balu |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2002 Репутация: нет Всего: 1 |
Очень напоминает анекдот про сына программиста и солнце: "... раз работает, то ничего не трогай" |
|||
|
||||
javas |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 23.10.2003 Репутация: нет Всего: 2 |
Как удалить, не знаю.
Это сообщение отредактировал(а) javas - 25.5.2006, 01:38 --------------------
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |