我有一个表,表本身具有简单的层次化父子关系。我没有使用嵌套集,而是添加了root_id
列,以便可以通过单个查询加载单个根的所有后代。
create table tree (
id serial primary key,
root_id int not null default id, -- error
parent_id int,
...
);
我想将该列设为not null
,但是新根目录的值将是根目录本身的主键值,该值在插入之前不可用。有什么方法可以将行的主键值用作root_id
列的默认值?
答案 0 :(得分:0)
在描述了表格以查看id
列的默认值并猜测语法之后,我发现您可以将序列的当前值用作默认值。
root_id int not null default currval('tree_id_seq'::regclass)