Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
15-1196340231
de.
2007-11-29 15:43
2007.12.30
Что это за хрень...


2-1196871903
Леонид
2007-12-05 19:25
2007.12.30
ADOCommand


15-1196074479
No_Dead
2007-11-26 13:54
2007.12.30
Логика БД


4-1181545591
AndreyRus
2007-06-11 11:06
2007.12.30
Остановка двигателя HDD


15-1196442691
Pazitron_Brain
2007-11-30 20:11
2007.12.30
Не заплатил за инет...