gpt4 book ai didi

Postgresql 使用外键约束截断表

转载 作者:行者123 更新时间:2023-12-02 07:50:54 25 4
gpt4 key购买 nike

目前我正在尝试截断在 Postgresql 11.3 上具有外键约束的表。

我尝试这样做

BEGIN; 
SET CONSTRAINTS ALL DEFERRED;
TRUNCATE tableA;
COMMIT;

但收到错误

ERROR:  cannot truncate a table referenced in a foreign key constraint
DETAIL: Table "xxx" references "tableA".
HINT: Truncate table "xxx" at the same time, or use TRUNCATE ... CASCADE.

SET CONSTRAINTS ALL DEFERRED 不会关闭外键约束检查吗?是否有办法在不触发外键约束检查且不涉及 CASCADE 的情况下截断表?

最佳答案

删除一张表中的所有数据

TRUNCATE TABLE 语句的最简单形式如下:

TRUNCATE TABLE table_name;

从具有外键引用的表中删除所有数据

要从主表和所有具有主表外键引用的表中删除数据,请使用 CASCADE 选项,如下所示:

TRUNCATE TABLE table_name CASCADE;

更新:

BEGIN;
ALTER TABLE table_name DISABLE TRIGGER ALL;
TRUNCATE TABLE table_name;
ALTER TABLE table_name ENABLE TRIGGER ALL;
COMMIT;

关于Postgresql 使用外键约束截断表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56700466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com