制作手册 pg_depend 条目

Crafting manual pg_depend entry

我想创建一个 UNLOGGED 实例化视图。我似乎明白 Postgresql (14) 的当前实现是不可能的。

我正在研究是否可以执行以下操作:

如果 A 仍然存在于数据库中,删除 table B 应该给出错误,除非使用 ON CASCADE

最后一步我需要一些帮助,因为我不熟悉 postgresql 目录和 oid 机制。

为了使这个问题切实可行,我将附上我的观点的架构:

CREATE UNLOGGED TABLE A(a int, b int);
CREATE TABLE B(a int, c int);

作为最后的说明,我知道不建议以上述方式弄乱 postgresql 目录。

该条目如下所示:

INSERT INTO pg_depend (classid, objid, objsubid, refclassid, refobjid, refobjsubid, deptype)
VALUES (
   'pg_class'::regclass,
   'a'::regclass,
   0,
   'pg_class'::regclass,
   'b'::regclass,
   0,
   'n'  -- "normal" dependency
);

您可以在 the documentation 中找到 pg_depend