Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Конвертация таблицы. Столбец generated as identity / 5 сообщений из 5, страница 1 из 1
13.04.2011, 17:01
    #37214752
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация таблицы. Столбец generated as identity
Здравствуйте всем!

Ваяю скрипт по изменению структуры таблицы. Все нормально получается, но есть одно место, когда нужно переопределить столбец как generated as identity. Было бы хорошо, если бы работал скрипт
Код: plaintext
1.
2.
3.
alter table NEWTAB
alter column IDREC set generated as identity 
( start with (select max(IDREC)+ 1  from OLDTAB) increment by  1  no cycle no cache no order)@ 
Тогда бы не нужно было выполнять 2 операции: сначала выяснять максимальный ID, а затем рестартить последовательность. Но он неправильный.
Мне интересно, можно ли этот скрипт переписать так, чтобы смысл не терялся? Т.е. мне нужно, чтобы в одном скрипте конвертации таблицы вычислялся max ID и рестартилась identity. Можно ли это сделать?

С уважением, Семен Попов
...
Рейтинг: 0 / 0
13.05.2011, 03:21
    #37258193
psln
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация таблицы. Столбец generated as identity
Присоединяюсь к вопросу.
...
Рейтинг: 0 / 0
13.05.2011, 10:13
    #37258387
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация таблицы. Столбец generated as identity
Добрый день.

Создайте файл gen_alter.sql:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select 
  'alter table NEWTAB '
||'alter column IDREC set generated as identity '
||'( start with '||rtrim(char(max(IDREC)+ 1 ))||' '
||'increment by 1 no cycle no cache no order)@'
from OLDTAB;

-- здесь другие генерирующие запросы, если надо
...
Выполните его:
Код: plaintext
db2 -txf gen_alter.sql -r  alter.ddl 
и сгенерированный файл команд:
Код: plaintext
db2 -td@ -f  alter.ddl 
...
Рейтинг: 0 / 0
15.07.2011, 20:22
    #37354227
caporegim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация таблицы. Столбец generated as identity
у меня на подобного рода запрос
Код: plaintext
1.
2.
3.
4.
5.
select 
  'alter table PAY.T alter column ID set generated by default as identity '
    ||'(start with '||char(coalesce(max(id),  - 9223372036854775808 ) +  1 )||');'
from PAY.T where ID <  0 

почемуто выдает значение с точкой.
Код: plaintext
1.
alter table PAY.T alter column ID set generated by default as identity (start with - 09223372036854775807 .); 

Откуда берется точка?
...
Рейтинг: 0 / 0
20.07.2011, 11:43
    #37359068
sadsad_at_tomsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертация таблицы. Столбец generated as identity
caporegimу меня на подобного рода запрос
Код: plaintext
1.
2.
3.
4.
5.
select 
  'alter table PAY.T alter column ID set generated by default as identity '
    ||'(start with '||char(coalesce(max(id),  - 9223372036854775808 ) +  1 )||');'
from PAY.T where ID <  0 

почемуто выдает значение с точкой.
Код: plaintext
1.
alter table PAY.T alter column ID set generated by default as identity (start with - 09223372036854775807 .); 

Откуда берется точка?

Я думаю это связано с типом данных id, попробуй поставить
Код: plaintext
...char(bigint(coalesce(max(id),  - 9223372036854775808 ))...
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Конвертация таблицы. Столбец generated as identity / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]