Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Вниз
ADOCommand Найти похожие ветки
← →
Леонид (2007-12-05 19:25) [0]Не подскажите как можно после INSERT-а узнать ID добавленной строки?
sql = "INSERT INTO tb (`id`,`value`) VALUES (null,"value")";
ADOCommand1.CommandText := sql;
ADOCommand1.Execute;
← →
Palladin © (2007-12-05 19:27) [1]так ведь сам же вставил
ID=Null
← →
Леонид (2007-12-05 19:28) [2]ID - автоинкрементное поле, запрос эквивалент sql = "INSERT INTO tb (`value`) VALUES ("value")";
null - для наглядности
← →
Palladin © (2007-12-05 19:31) [3]select @@Identity
← →
Desdechado © (2007-12-05 21:04) [4]> select @@Identity
Это для MSSQL.
У авторя неясно что.
В общем случае решается только, если в таблице есть уникальный ключ, не содержащий поле инкремента. Тогда по нему можно перезапросить вставленное и узнать ID.
← →
Юрий Зотов © (2007-12-05 21:13) [5]Если поле автоинкрементное, то select max?
← →
palva © (2007-12-05 21:18) [6]> Если поле автоинкрементное, то select max?
Если, конечно, другой пользователь не успел между вашим созданием и запросом создать еще несколько своих записей.
← →
Palladin © (2007-12-05 21:19) [7]
> Desdechado © (05.12.07 21:04) [4]
ну не только MSSQL, это вообще как бы стандарт TSQL
← →
Palladin © (2007-12-05 21:20) [8]
> palva © (05.12.07 21:18) [6]
max вполне можно использовать если оформить это в единой транзакции
← →
Desdechado © (2007-12-05 21:33) [9]> max вполне можно использовать если оформить это в единой
> транзакции
Что-то подозрительно это, хоть и не знаю MS, но по идее автоинкремент работает в контексте базы, а не транзакции, иначе бы другие юзеры не могли добавлять до окончания твоей транзакции.
← →
Johnmen © (2007-12-05 21:34) [10]
> Palladin © (05.12.07 21:20) [8]
> max вполне можно использовать
> если оформить это в единой транзакции
Не зависимо от уровня её изоляции? :)
← →
Palladin © (2007-12-05 22:10) [11]
> Johnmen © (05.12.07 21:34) [10]
зависимо, натыкался :)
← →
oxffff © (2007-12-06 08:41) [12]RTFM
@@IDENTITY and SCOPE_IDENTITY return the last identity value generated in any table in the current session.
However, SCOPE_IDENTITY returns the value only within the current scope; @@IDENTITY is not limited to a specific scope.
← →
Johnmen © (2007-12-06 09:19) [13]
> oxffff © (06.12.07 08:41) [12]
А как же [4]?
← →
Palladin © (2007-12-06 09:31) [14]
> oxffff © (06.12.07 08:41) [12]
речь не об @@Identity, если что, с ним то все понятно, а об использовании max внутри транзакции...
← →
oxffff © (2007-12-06 12:25) [15]
> Johnmen © (06.12.07 09:19) [13]
> Palladin © (06.12.07 09:31) [14]
А как насчет триггера?
Для MSSQL анализ inserted таблицы.
← →
Anatoly Podgoretsky © (2007-12-06 13:36) [16]Автор не хочет разглашать базу, а вы тут копья ломаете.
← →
KSergey © (2007-12-06 14:31) [17]> Anatoly Podgoretsky © (06.12.07 13:36) [16]
> Автор не хочет разглашать базу, а вы тут копья ломаете.
А это прикольно.
Вообще, голубые, простите, занятно активизировались :)
← →
Anatoly Podgoretsky © (2007-12-06 15:00) [18]> KSergey (06.12.2007 14:31:17) [17]
Сам ты голубой :-)
← →
Palladin © (2007-12-06 15:15) [19]Просто у некоторых голубых инет появился :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c