作为一名数据库开发人员,当我尝试将数据转储转换为PostgreSQL(10.1)数据库' tlesson'时,我遇到了这个通知。
通知=>
pg_dump: NOTICE: there are circular foreign-key constraints on this table:
pg_dump: members
转储命令=>
$ pg_dump -U postgres -d translesson -a
A' tlesson'表'成员' constraint =>
ALTER TABLE ONLY members
ADD CONSTRAINT friend_fk FOREIGN KEY (friend_id) REFERENCES members(member_id);
我应该放弃朋友_fk'约束删除我有的通知?
答案 0 :(得分:2)
如果你总是丢弃整个数据库,那么这不是问题,因为生成的SQL(或pg_restore)只在加载了所有数据后启用(创建)外键,因此在这种情况下没有问题。
但是,如果您只转储没有FK的单个表,那么只有在恢复之前手动删除FK,然后在之后重新创建它时,导入才会起作用。
原因是如果你有循环引用,几乎不可能以正确的顺序生成INSERT语句