powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить последовательность автоматически созданную при создании таблицы?
4 сообщений из 4, страница 1 из 1
Как удалить последовательность автоматически созданную при создании таблицы?
    #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
Как удалить последовательность автоматически созданную при создании таблицы?
    #34272723
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что \d table1 показывет?
...
Рейтинг: 0 / 0
Как удалить последовательность автоматически созданную при создании таблицы?
    #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
Как удалить последовательность автоматически созданную при создании таблицы?
    #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
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как удалить последовательность автоматически созданную при создании таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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