Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Вниз

Изменение текущего значения генератора   Найти похожие ветки 

 
Евгений Р.   (2008-08-28 23:25) [0]

После перекачивания данных со старой программы в новую хочу установить значение генератора:
ALTER SEQUENCE GEN_N RESTART WITH
         (select max(field1)+1
          from table1)

похоже, что эта команда работает только с константой?


 
Евгений Р.   (2008-08-28 23:30) [1]

аналогично SET GENERATOR


 
turbouser ©   (2008-08-29 06:11) [2]

Может так устроит?
select gen_id(GEN_N,(select max(field1)+1 from table1)) from rdb$database


 
Евгений Р.   (2008-08-29 14:45) [3]

т.е. в 2 запроса:
1- обнулить его
2- [2] инкременировать на нужную величину?


 
turbouser ©   (2008-08-29 14:57) [4]


> Евгений Р.   (29.08.08 14:45) [3]

Зачем в 2 запроса ? при выполнении запроса из [2] GEN_N будет иметь значение max(field1)+1
Какой смысл обнулять?


 
turbouser ©   (2008-08-29 14:59) [5]

Присвоение значения генератору происходит вне контекста транзакции


 
Евгений Р.   (2008-08-29 15:33) [6]

проверка:
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


 
turbouser ©   (2008-08-29 15:38) [7]


> Евгений Р.   (29.08.08 15:33) [6]

А, точно, там же инкремент...


 
Евгений Р.   (2008-08-29 15:54) [8]

А всеже ALTER SEQUENCE GEN_N RESTART WITH nn работает только с константой?


 
turbouser ©   (2008-08-29 16:15) [9]

в parse.y вот что:
alter_sequence_clause : symbol_generator_name RESTART WITH signed_long_integer
  { $$ = make_node (nod_set_generator2, e_gen_id_count, $1,
   MAKE_const_slong ((IPTR) $4)); }
 | symbol_generator_name RESTART WITH NUMBER64BIT
  { $$ = make_node (nod_set_generator2, e_gen_id_count, $1,
   MAKE_constant((dsql_str*) $4, CONSTANT_SINT64)); }
 | symbol_generator_name RESTART WITH "-" NUMBER64BIT
  { $$ = make_node (nod_set_generator2, e_gen_id_count, $1,
   make_node(nod_negate, 1, MAKE_constant((dsql_str*) $5, CONSTANT_SINT64))); }

Если я правильно понял - то только константа.


 
Евгений Р.   (2008-08-29 16:31) [10]


> turbouser ©   (29.08.08 16:15) [9]

а как Вы это получили?


 
turbouser ©   (2008-08-29 16:39) [11]


> Евгений Р.   (29.08.08 16:31) [10]

FB ведь OpenSource.
Вот тут, например
http://fisheye1.atlassian.com/browse/~raw,r=1.293/firebird/firebird2/src/dsql/parse.y


 
Loginov Dmitry ©   (2008-08-31 12:05) [12]

> 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


 
turbouser ©   (2008-08-31 19:41) [13]

Кстати, все правильно насчет
> что эта команда работает только с константой

т.к. DDL с DML низзя мешать в одну кучу :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1235680515
Petr V. Abramov
2009-02-26 23:35
2009.04.26
" я не не алкашь и не пьяница я" :)


15-1235674928
MsGuns
2009-02-26 22:02
2009.04.26
КУЕФА Есть почин ! Двое из пяти уже там. Ждем остальных !


15-1235672067
Кое кто
2009-02-26 21:14
2009.04.26
англо-русский сайт


2-1236664136
AIK
2009-03-10 08:48
2009.04.26
Access Violation


2-1236507266
Tany
2009-03-08 13:14
2009.04.26
double формат в DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский