postgresql Переименование связанных таблиц
postgresql считается лучшей SQL БД.
Мне стало интересно, почему при переименовании таблицы командой ALTER TABLE producr rename to product; не переименовываются так-же связанные таблицы (таблицы которые были созданы автоматически). Пример всего списка
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+-----------------+----------+----------
public | customer | table | postgres
public | customer_id_seq | sequence | postgres
public | producr | table | postgres
public | producr_id_seq | sequence | postgres
(4 rows) Опечатка в 3 табилце. Последняя таблица создана автоматически.
Из следующего кода видим, что автоматические связанные таблицы переименованы не были. Хорошо, что она 1, а если бы их было 10?
postgres=# ALTER TABLE producr rename to product;
ALTER TABLE
postgres=# \d
List of relations
Schema | Name | Type | Owner
--------+-----------------+----------+----------
public | customer | table | postgres
public | customer_id_seq | sequence | postgres
public | producr_id_seq | sequence | postgres
public | product | table | postgres
(4 rows)
В этом есть какая-то причина, Может я не ту команду ввел?
Ответы (1 шт):
Потому что это не «связанная таблица», а всего лишь последовательность, которая хоть и создавалась вместе с таблицей, является почти независимым объектом БД. Либо переименовывайте последовательность отдельно:
ALTER SEQUENCE producr_id_seq RENAME TO product_id_seq;
Либо модернизируйте свой код и используйте генерацию:
CREATE TABLE product (
id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY
)
;
Table "public.product" Column | Type | Collation | Nullable | Default --------+--------+-----------+----------+---------------------------------- id | bigint | | not null | generated by default as identity
И никаких последовательностей.