Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить последовательность автоматически созданную при создании таблицы? / 4 сообщений из 4, страница 1 из 1
22.01.2007, 12:13
    #34271698
victor_kr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить последовательность автоматически созданную при создании таблицы?
Создал таблицу с полем ID типа SERIAL. В результате автоматически сгенерировалась последовательность table1_ID_seq. При перепроектировании базы данных появилась необходимость для нескольких таблиц использовать одну последовательность. Для замены последовательностей выполнил скрипт:

Код: plaintext
1.
2.
3.
4.
ALTER TABLE table1
   ALTER COLUMN id SET DEFAULT nextval('newseq_id_seq'::regclass);
ALTER TABLE table2
   ALTER COLUMN id SET DEFAULT nextval('newseq_id_seq'::regclass);

После этого попытался выполнить скрипт:

Код: plaintext
1.
2.
DROP SEQUENCE table1_id_seq;
DROP SEQUENCE table2_id_seq;

При этом возникла ошибка:

ERROR: cannot drop sequence table1_id_seq because table table1 column id requires it
SQL state: 2BP01
Hint: You may drop table table1 column id instead.

Подскажите, как можно удалить ненужные последовательности?
...
Рейтинг: 0 / 0
22.01.2007, 16:03
    #34272723
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить последовательность автоматически созданную при создании таблицы?
Что \d table1 показывет?
...
Рейтинг: 0 / 0
22.01.2007, 17:51
    #34273119
victor_kr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить последовательность автоматически созданную при создании таблицы?
Поступил следующим образом. После переопределения последовательности выполнил скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
delete from pg_depend
  where refobjid = (select oid from pg_class where relname = 'table1_id_seq');
delete from pg_depend
  where objid = (select oid from pg_class where relname = 'table1_id_seq');

DROP SEQUENCE table1_id_seq;
...
Рейтинг: 0 / 0
23.01.2007, 11:00
    #34274349
Andrey Daeron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить последовательность автоматически созданную при создании таблицы?
victor_kr
Код: plaintext
1.
2.
3.
4.
5.
delete from pg_depend
  where refobjid = (select oid from pg_class where relname = 'table1_id_seq');
delete from pg_depend
  where objid = (select oid from pg_class where relname = 'table1_id_seq');


Не очень красиво и правильно :( Может в последствии привести к непредсказуемым рузультатам - например "подвисшие" данные в internal таблицах Постгреса.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить последовательность автоматически созданную при создании таблицы? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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