设想
一个表包含代表一个链(或者,更准确地说,分别是任意数量的独立链)的记录。
除了引用链中的直接祖先之外,记录还应该引用插入的第一条记录,标记特定链的开始。
问题陈述
- 该表只被插入,写入它的用户没有
update
权限 - 理想情况下,包含对链的第一条记录的引用的列将是自引用外键以及
not null
约束 - 主键是 a ,因此访问序列 ( ) 的
uuid
潜在解决方案不适用latest_value()
serial
create table chained_records (
id uuid not null default gen_random_uuid(),
-- in the case, where an inserted record *is* the first of a chain,
-- this column would reference itself (i.e. the above `id` column)
first_in_chain_id uuid not null references chained_records(id),
-- snip
);
问题
在现代 postgres (14) 中,可以这样做吗?
是否存在一种方法来插入一个新的不可变记录,该记录在单个insert
语句中引用自身,同时保持所有约束到位?