-
После перекачивания данных со старой программы в новую хочу установить значение генератора: ALTER SEQUENCE GEN_N RESTART WITH (select max(field1)+1 from table1) похоже, что эта команда работает только с константой?
-
аналогично SET GENERATOR
-
Может так устроит? select gen_id(GEN_N,(select max(field1)+1 from table1)) from rdb$database
-
т.е. в 2 запроса: 1- обнулить его 2- [2] инкременировать на нужную величину?
-
> Евгений Р. (29.08.08 14:45) [3]
Зачем в 2 запроса ? при выполнении запроса из [2] GEN_N будет иметь значение max(field1)+1 Какой смысл обнулять?
-
Присвоение значения генератору происходит вне контекста транзакции
-
проверка: 1.создаю gen_n 2.присваиваю значение 1000 3.select gen_id(GEN_N,200) from rdb$database 4.значение стало 1200. а мне надо установить 200
за направление спасибо искомый результат получил: select gen_id(GEN_N, (select max(field) from table)- (select gen_id(GEN_N,0)from rdb$database)) from rdb$database
-
> Евгений Р. (29.08.08 15:33) [6]
А, точно, там же инкремент...
-
А всеже ALTER SEQUENCE GEN_N RESTART WITH nn работает только с константой?
-
в parse.y вот что: alter_sequence_clause : symbol_generator_name RESTART WITH signed_long_integer
| symbol_generator_name RESTART WITH NUMBER64BIT
| symbol_generator_name RESTART WITH '-' NUMBER64BIT
Если я правильно понял - то только константа.
-
> turbouser © (29.08.08 16:15) [9]
а как Вы это получили?
-
-
> select gen_id(GEN_N,(select max(field1)+1 from table1)) > from rdb$database
тогда уж так:
SELECT gen_id(GEN_TEST, -gen_id(GEN_TEST, 0) + (SELECT Max(ID) FROM TEST) + 1) FROM RDB$DATABASE
-
Кстати, все правильно насчет > что эта команда работает только с константой
т.к. DDL с DML низзя мешать в одну кучу :)
|