PGAdmin создает резервную копию SQL со вставками в правильном порядке - PullRequest
0 голосов
/ 16 октября 2019

Мне нужен дамп базы данных в 2 файла sql: сценарий ddl и сценарий dml.

Я использовал графический интерфейс pgadmin, нажал на резервную копию и установил только параметр Only schema, чтобы создать ddl. Затем я проделал ту же операцию, но я нажал Only data, чтобы создать dml.

Проблема связана с порядком вставки и импортом при ограничении FK.

Например, у меня есть таблица Foo (id, foo_parent_id, ...) и вставка в следующем порядке:

insert into foo values(1, 3);
insert into foo values(2, 3);
insert into foo values(3, null);

во время выполнения файла произошел сбой при первой вставке, так как родитель с идентификатором 3 не существует. Возможно ли это решить? Я выполнил эти файлы в контейнере Docker Postgres. Спасибо.

1 Ответ

0 голосов
/ 16 октября 2019

Вы можете изменить ограничение внешнего ключа как deferrable initially deferred или deferrable и явно отложить его до начала вставки данных.

Таким образом, отношения внешнего ключа будут проверяться в конце транзакции (чтобудет означать, что ваши транзакции понадобятся в транзакциях, если они еще не выполнены).

...