制作手册 pg_depend 条目
Crafting manual pg_depend entry
我想创建一个 UNLOGGED 实例化视图。我似乎明白 Postgresql (14) 的当前实现是不可能的。
我正在研究是否可以执行以下操作:
- 鉴于我有两个 tables
A
和 B
.
- 其中
A
取决于 B
,因此 B
是数据源,A
是实体化视图。在我的例子中,只有 A
会被 UNLOGGED。 B
将被记录。
- 在
pg_depends
目录条目中添加一个新条目以手动指定 A
依赖于 B
,这样我保留了 postgres 为我的依赖项做正确事情的好处当谈到删除 tables.
如果 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
。
我想创建一个 UNLOGGED 实例化视图。我似乎明白 Postgresql (14) 的当前实现是不可能的。
我正在研究是否可以执行以下操作:
- 鉴于我有两个 tables
A
和B
. - 其中
A
取决于B
,因此B
是数据源,A
是实体化视图。在我的例子中,只有A
会被 UNLOGGED。B
将被记录。 - 在
pg_depends
目录条目中添加一个新条目以手动指定A
依赖于B
,这样我保留了 postgres 为我的依赖项做正确事情的好处当谈到删除 tables.
如果 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
。