使用PK串行列值作为另一个非空列的默认值

问题描述 投票:0回答:1

我有一个表格,它与自己有一个简单的分层父子关系。我没有使用嵌套集,而是添加了一个root_id列,因此我可以使用单个查询加载单个根的所有后代。

create table tree (
    id          serial                  primary key,
    root_id     int     not null        default id,  -- error
    parent_id   int,
    ...
);

我想将该列设为not null,但新根的值将是root用户自己的主键值,在插入之前不可用。有没有办法使用行的主键值作为root_id列的默认值?

postgresql default-value
1个回答
0
投票

在描述表以查看id列的默认值并猜测语法后,我发现您可以使用序列的当前值作为默认值。

root_id     int     not null        default currval('tree_id_seq'::regclass)
© www.soinside.com 2019 - 2024. All rights reserved.