PostgreSQL默认值不能包含变量或引用表中的任何其他列,也不能引用不同表中的列。
然而,可以使用触发器创建一个“默认值”,以以下方式运行。首先,让我举两个示例表说明:
create table projects
(
id serial primary key,
created_at timestamp with time zone default now()
);
create table last_updated
(
project_id integer primary key references projects,
updated_at timestamp with time zone default ...
);
在第二个表格(
last_updated
)中,我希望默认值类似于 default projects(created_at)
。也就是说,如果未指定 updated_at
的日期,则查看项目表中引用的 project_id
,找到创建日期 created_at
并将 updated_at
设置为此日期。但是,你不能按照我问题中第一段所述进行编写。那么,如何编写触发器以实现此功能呢?
NEW.updated_at
是否为 NULL,如果是,则从projects
中选择适当的值并将其赋给NEW.updated_at
。 - Politank-Z