PGAdmin生成带有正确顺序插入的备份sql

问题描述 投票:0回答:1

我需要将数据库转储到2个sql文件中:ddl脚本和dml脚本。

我使用了pgadmin的gui,单击备份并仅选中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);

在文件执行期间,由于ID 3的父代不存在,它在第一次插入时崩溃。有可能解决吗?我在docker postgres容器中执行了这些文件。谢谢。

postgresql pgadmin
1个回答
0
投票

您可以将外键约束更改为deferrable initially deferreddeferrable,并在开始插入数据之前显式推迟它。

这种方式将在事务结束时检查外键关系(这意味着如果还没有插入,则需要在事务中进行插入)。

© www.soinside.com 2019 - 2024. All rights reserved.