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

Ваяю скрипт по изменению структуры таблицы. Все нормально получается, но есть одно место, когда нужно переопределить столбец как 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
Конвертация таблицы. Столбец generated as identity
    #37258193
psln
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присоединяюсь к вопросу.
...
Рейтинг: 0 / 0
Конвертация таблицы. Столбец generated as identity
    #37258387
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Создайте файл 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
Конвертация таблицы. Столбец generated as identity
    #37354227
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 .); 

Откуда берется точка?
...
Рейтинг: 0 / 0
Конвертация таблицы. Столбец generated as identity
    #37359068
sadsad_at_tomsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Конвертация таблицы. Столбец generated as identity
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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