gpt4 book ai didi

sql - PostgreSQL:列出相关行

转载 作者:行者123 更新时间:2023-11-29 11:40:51 25 4
gpt4 key购买 nike

如何查看哪些条目依赖于使用 PostgreSQL 的给定条目? (从属意思是“有一个引用条目的外键”)。

基本上,当我DELETE 表的给定条目时,我想检查哪些条目可能被级联。

最佳答案

要查看依赖于 fk 约束的所有实际,请使用下述工具识别列。

外键约束定义为 ON DELETE CASCADE ,依赖行将被删除(可能将 DELETE 级联到更多depending 表)。

如果使用 ON DELETE SET NULL/ON DELETE SET DEFAULT 定义外键约束,则只有列中的值将重置为 NULL/默认值。

否则,对具有依赖行的行执行 DELETE 操作将失败并出现异常。

然后在已识别的表/列上运行如下查询:

SELECT f.tbl_fk_id, f.col_fk
FROM tbl_fk f
JOIN tbl t ON f.col_fk = t.col
AND <same condition as DELETE here>;

pgAdmin提供此功能:

Dependents

在左侧的对象浏览器中选择对象,然后选择右上方的从属 Pane 。

pgAdmin 使用对系统目录的几个查询来组装列表。如果您想自己构建查询,您可以记录发出的命令。

此外,当删除一个您不能完全确定从属关系的对象时,请先尝试普通的DROP(没有CASCADE)。如果存在任何依赖项,您将收到一条错误消息 ...

最后,但谨慎行事!,您可以start a transaction并发出命令:

BEGIN;
DROP TABLE tbl CASCADE;

然后,如果你喜欢你所看到的:

COMMIT;

如果你不这样做:

ROLLBACK;

这就像从未发生过一样。 ;)

你会看到这样的东西:

NOTICE:  drop cascades to 4 other objects
DETAIL: drop cascades to constraint tbl1_tbl_id_fkey on table myschema.tbl1
drop cascades to constraint tbl_winner_tbl_id_fkey on table myschema.tbl_foo
drop cascades to constraint bar_tbl_id_fkey on table myschema.bar
drop cascades to constraint tbl1_tbl_id_fkey on table x.tbl1

Query returned successfully with no result in 47 ms.

关于sql - PostgreSQL:列出相关行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748752/

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