Postgresql复制生成的列



假设一个表t:

create table if not exists t(
a integer primary key generated by default as identity,
b integer,
c text
);

和简单插入insert into t (b, c) values (2, 'abc');是否有任何选项如何重写此插入,因此列b将是coalesce(b, a)?因此,当bnull时,b等于生成列a

我知道有一个选项使用RETURNING关键字和更新或在插入触发器之前使用。

您打算做的事情会引入冗余,所以我建议您不要这样做。相反,在查询表时使用coalesce。一个方便的解决方案是在表上创建一个视图。

如果您坚持在表中持久化,则必须使用触发器。

最新更新