![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обнуление генератора в 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 не пробовал?