小编Eld*_*rov的帖子

递归外键的排除约束(以树为例)

我有带有递归外键的表。它只是层次树结构:

CREATE TABLE tree (
    id              INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    value           INTEGER NOT NULL,
    tree_id         SMALLINT NOT NULL CHECK (tree_id > CAST(0 AS SMALLINT)),
    parent_id       INTEGER REFERENCES tree ON DELETE RESTRICT ON UPDATE RESTRICT,

    EXCLUDE (tree_id WITH =) WHERE (parent_id IS NULL) -- allow only one root within tree
);
Run Code Online (Sandbox Code Playgroud)

如何拒绝插入非空parent_id和不同的记录tree_id?即外键parent_id只能引用id同一个内的主键tree_id

postgresql tree foreign-key constraint recursive

0
推荐指数
1
解决办法
221
查看次数

标签 统计

constraint ×1

foreign-key ×1

postgresql ×1

recursive ×1

tree ×1