Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Как пересоздать таблицу, на которую ссылаются FK  [new]
Cyrax_02
Member

Откуда:
Сообщений: 1396
На таблицу ссылается куча FK из других таблиц. Необходимо эту таблицу удалить и создать заново, не удаляя FK.
Варианты
ALTER table_with_fk DISABLE TRIGGER ALL;
SET session_replication_role = 'replica';
SET CONSTRAINTS fk DEFERRED";
проблему не решают, т.к. в сабже проблема касается зависимостей объектов, а указанные варианты всего лишь отключают проверку системных триггеров на FK, а зависимости объектов (в данном случае FK-таблица) сохраняются и не дают удалить таблицу.
10 ноя 20, 15:51    [22229640]     Ответить | Цитировать Сообщить модератору
 Re: Как пересоздать таблицу, на которую ссылаются FK  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4396
Cyrax_02,

Никак.
И значит надо другой путь искать начиная с вопроса "а зачем вам это надо и чем вас truncate не устраивает для этого".

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
10 ноя 20, 15:57    [22229643]     Ответить | Цитировать Сообщить модератору
 Re: Как пересоздать таблицу, на которую ссылаются FK  [new]
Cyrax_02
Member

Откуда:
Сообщений: 1396
Maxim Boguk
И значит надо другой путь искать начиная с вопроса "а зачем вам это надо и чем вас truncate не устраивает для этого".
Это один из вариантов решения проблемы наследования автогенерируемого столбца - путём пересоздания дочерней таблицы.

Сообщение было отредактировано: 10 ноя 20, 16:03
10 ноя 20, 16:05    [22229650]     Ответить | Цитировать Сообщить модератору
 Re: Как пересоздать таблицу, на которую ссылаются FK  [new]
big-trot
Member

Откуда: Тверь
Сообщений: 287
Cyrax_02,

Клонируете таблицу с данными, а потом пересоздаете внешние ключи на новую таблицу, а предыдущие удаляете. В принципе можно написать скрипт и выполнить в одной тразакции.
11 ноя 20, 17:36    [22230302]     Ответить | Цитировать Сообщить модератору
 Re: Как пересоздать таблицу, на которую ссылаются FK  [new]
Cyrax_02
Member

Откуда:
Сообщений: 1396
big-trot
Клонируете таблицу с данными, а потом пересоздаете внешние ключи на новую таблицу, а предыдущие удаляете.
Так этот вариант - то же самое, что и пересоздание внешних ключей (удаляем FK - пересоздаём таблицу - создаём FK).
Согласно сабжу, внешние ключи не должны удаляться.
12 ноя 20, 01:01    [22230518]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить