Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как создать поле serial, если в этой таблице уже есть данные? / 7 сообщений из 7, страница 1 из 1
23.06.2004, 16:23
    #32574231
skar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать поле serial, если в этой таблице уже есть данные?
В мануале написано, что нельзя добавить в таблицу поле типа сериал, если в таблице уже есть данные :(
Есть ли способы решения этой проблемы?
...
Рейтинг: 0 / 0
23.06.2004, 17:17
    #32574370
olleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать поле serial, если в этой таблице уже есть данные?
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
23.06.2004, 17:20
    #32574377
Andron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать поле serial, если в этой таблице уже есть данные?
Создай пустую таблицу с такой же структурой но еще добавь к ней serial и перезалей из исходной данные. Если данных очень много, придется заморочиться с raw table во избежание длинной транзакции. Потом удали исходную таблицу и переименуй новую.
Излишне напоминать, что если данные в таблице представляют ценность, то перед перезаливкой следует сделать выгрузку данных и сохранить структуру таблицы (на всякий случай).

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


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