powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как создать поле serial, если в этой таблице уже есть данные?
7 сообщений из 7, страница 1 из 1
Как создать поле serial, если в этой таблице уже есть данные?
    #32574231
skar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В мануале написано, что нельзя добавить в таблицу поле типа сериал, если в таблице уже есть данные :(
Есть ли способы решения этой проблемы?
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32574370
olleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alter table t1 add(f1 integer);

update t1 set f1=rowid where 1=1;

alter table t1 modify (f1 serial not null);

create unique index idx1 on t1(f1);

update statistics for table t1;
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32574377
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай пустую таблицу с такой же структурой но еще добавь к ней serial и перезалей из исходной данные. Если данных очень много, придется заморочиться с raw table во избежание длинной транзакции. Потом удали исходную таблицу и переименуй новую.
Излишне напоминать, что если данные в таблице представляют ценность, то перед перезаливкой следует сделать выгрузку данных и сохранить структуру таблицы (на всякий случай).

За мир во всем Мире!
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32575186
skar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olleg , спасибо!
Все ОК.
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32575592
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фокус с rowid не прокатит если таблица фрагментирована.
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32575690
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
зато при переливании в другую таблицу надо еще не забыть про констрайнты и триггеры. Да и необязательно использовать rowid можно написать небольшую хранимую процедуру, которая упорядочить как нибудь таблицу и инкрементом заупдэйтит поле int.
...
Рейтинг: 0 / 0
Как создать поле serial, если в этой таблице уже есть данные?
    #32582078
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблица фрагментированна, то у нее может стоять опция WITH ROW ID. И тогда фокус прокатит :-)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как создать поле serial, если в этой таблице уже есть данные?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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