![](/img/trans.png)
[英]Postgres - Insert timestamps in an INSERT INTO query while selecting values from tables?
[英]Postgres: Insert values in two tables simultaneously from csv
我有两个表,每个表都有一个外键引用另一个:
users
favorite_post_id int NOT NULL
posts
user_id int NOT NULL
考虑一个用户可以有很多帖子,但只有一个最喜欢的帖子。
我想使用COPY
命令为我的数据库设置两个 CSV 文件。 数据包含相互引用的行(即具有(id: 2, user_id: 1)
的帖子和具有(id: 1, favorite_post_id: 2)
)
但是,我无法同时进行插入,导致插入到一个表的错误违反了对另一个表的外部约束。
insert or update on table "posts" violates foreign key constraint "FK_d8feca7198a0931f8234dcc58d7"
Key (user_id)=(1) is not present in table "users".
有没有办法立即提交插入,以便它同时发生?
如果您确定导入不会导致不一致,您可以
BEGIN;
SET LOCAL session_replication_role = replica;
COPY users FROM ...;
COPY posts FROM ...;
COMMIT;
此设置将禁用触发器,从而禁用外键约束。
如果您不是 100% 确定数据,更好的方法是删除外键约束之一,加载表并再次创建约束。
如果您需要防止并发活动造成不一致,您也可以在事务中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.