我有一个表格,它与自己有一个简单的分层父子关系。我没有使用嵌套集,而是添加了一个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
列的默认值?
在描述表以查看id
列的默认值并猜测语法后,我发现您可以使用序列的当前值作为默认值。
root_id int not null default currval('tree_id_seq'::regclass)