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

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

Обнуление генератора в InterBase [D6, IB6.x]


ruslan_as ©   (2003-09-20 09:57:00) 

Как правильно программно обнуляется счетчик генератора?

Я пытаюсь сделать так:
DM.IBQUPDATE.SQL.Clear;
DM.IBQUPDATE.SQL.Add("SET GENERATOR IDTMP TO 0");
DM.IBQUPDATE.ExecSQL;

Не ругается, но и не обнуляет.

Пытаюсь сделать так:
DM.IBQTMP.GeneratorField.IncrementBy:=0;
Тоже не срабатывает.


Sergey_Masloff   (2003-09-21 14:03:00) [1]

Zacho ©, (20.09.03 14:55) [6]
jack128 © (20.09.03 13:41) [5]

Да, похоже на то. В смысле меняется без транзакции. Я сначала думал что в IBExperte стоит в начтройка что-то вроде AutoCommitDDL, тем более что-то он коммитит автоматом (видно через SQL Monitor) но не из эксперта результат тот же.


jack128   (2003-09-20 18:54:00) [2]

с set generator. В IBExpert"е проводился эксперемент. В одном окне скуль едитора set generator gen_address_id to 1 (текущ. значение было 0) в другом select gen_id(gen_address_id) from rdb$database


Zacho   (2003-09-20 14:55:00) [3]


> jack128 © (20.09.03 13:41) [5]

А эксперимент был с GEN_ID или с SET GENERATOR ?
GEN_ID - DML, SET GENERATOR - DDL.


jack128   (2003-09-20 13:41:00) [4]


> Ну да. Только манипуляции генераторами это DDL и как любой
> DDL требует подтверждения транзакции в которой проведен.

Сейчас следственный эксперемент провел. Генератору абсолютно пофигу подтвердил ты транзакцию, ролбэкнул или вообще не завершил. Он УЖЕ изменил свое значение, так что и в этой и любой другой транзакции будет использоваться его новое значение...


Sergey_Masloff   (2003-09-20 12:34:00) [5]

jack128 © (20.09.03 11:10) [3]

>> да все правильно вроде делаешь. Транзакцию подтверди и наслаждайся

>Вообще я думал, что генераторы вне контекста транзакций работают?

Ну да. Только манипуляции генераторами это DDL и как любой DDL требует подтверждения транзакции в которой проведен.


jack128   (2003-09-20 11:10:00) [6]


> да все правильно вроде делаешь. Транзакцию подтверди и наслаждайся

Вообще я думал, что генераторы вне контекста транзакций работают?
Или это только gen_id() касается???
В любом случае второй вариант gen_id(gen_name,-gen_id(gen_name,0));


Sergey_Masloff   (2003-09-20 10:55:00) [7]

ruslan_as ©
да все правильно вроде делаешь. Транзакцию подтверди и наслаждайся.


stud   (2003-09-20 10:27:00) [8]

а использовать для этого ibsql не пробовал?


Наверх

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