Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ADOCommand [D7, WinXP]


Леонид ©   (2007-12-05 19:25:00) 

Не подскажите как можно после INSERT-а узнать ID добавленной строки?

 sql = 'INSERT INTO tb (`id`,`value`) VALUES (null,'value')';
 ADOCommand1.CommandText := sql;
 ADOCommand1.Execute;


Palladin   (2007-12-06 15:15:00) [1]

Просто у некоторых голубых инет появился :)


Anatoly Podgoretsky   (2007-12-06 15:00:00) [2]

> KSergey  (06.12.2007 14:31:17)  [17]

Сам ты голубой :-)


KSergey   (2007-12-06 14:31:00) [3]

> Anatoly Podgoretsky ©   (06.12.07 13:36) [16]
> Автор не хочет разглашать базу, а вы тут копья ломаете.

А это прикольно.
Вообще, голубые, простите, занятно активизировались :)


Anatoly Podgoretsky   (2007-12-06 13:36:00) [4]

Автор не хочет разглашать базу, а вы тут копья ломаете.


oxffff   (2007-12-06 12:25:00) [5]


> Johnmen ©   (06.12.07 09:19) [13]



> Palladin ©   (06.12.07 09:31) [14]


А как насчет триггера?
Для MSSQL анализ inserted таблицы.


Palladin   (2007-12-06 09:31:00) [6]


> oxffff ©   (06.12.07 08:41) [12]

речь не об @@Identity, если что, с ним то все понятно, а об использовании max внутри транзакции...


Johnmen   (2007-12-06 09:19:00) [7]


> oxffff ©   (06.12.07 08:41) [12]

А как же [4]?


oxffff   (2007-12-06 08:41:00) [8]

RTFM

@@IDENTITY and SCOPE_IDENTITY return the last identity value generated in any table in the current session.
However, SCOPE_IDENTITYreturns the value only within the current scope; @@IDENTITY is not limited to a specific scope.


Palladin   (2007-12-05 22:10:00) [9]


> Johnmen ©   (05.12.07 21:34) [10]

зависимо, натыкался :)


Johnmen   (2007-12-05 21:34:00) [10]


> Palladin ©   (05.12.07 21:20) [8]
> max вполне можно использовать
> если оформить это в единой транзакции

Не зависимо от уровня её изоляции? :)


Desdechado   (2007-12-05 21:33:00) [11]

> max вполне можно использовать если оформить это в единой
> транзакции
Что-то подозрительно это, хоть и не знаю MS, но по идее автоинкремент работает в контексте базы, а не транзакции, иначе бы другие юзеры не могли добавлять до окончания твоей транзакции.


Palladin   (2007-12-05 21:20:00) [12]


> palva ©   (05.12.07 21:18) [6]

max вполне можно использовать если оформить это в единой транзакции


Palladin   (2007-12-05 21:19:00) [13]


> Desdechado ©   (05.12.07 21:04) [4]

ну не только MSSQL, это вообще как бы стандарт TSQL


palva   (2007-12-05 21:18:00) [14]

> Если поле автоинкрементное, то select max?
Если, конечно, другой пользователь не успел между вашим созданием и запросом создать еще несколько своих записей.


Юрий Зотов   (2007-12-05 21:13:00) [15]

Если поле автоинкрементное, то select max?


Desdechado   (2007-12-05 21:04:00) [16]

> select @@Identity
Это для MSSQL.
У авторя неясно что.
В общем случае решается только, если в таблице есть уникальный ключ, не содержащий поле инкремента. Тогда по нему можно перезапросить вставленное и узнать ID.


Palladin   (2007-12-05 19:31:00) [17]

select @@Identity


Леонид   (2007-12-05 19:28:00) [18]

ID - автоинкрементное поле, запрос эквивалент  sql = 'INSERT INTO tb (`value`) VALUES ('value')';

null - для наглядности


Palladin   (2007-12-05 19:27:00) [19]

так ведь сам же вставил
ID=Null


Наверх

Титульная страница Поиск, карта сайта Написать письмо