我正在使用一个使用列定义的遗留postgres数据库,如下所示:
timestamp without time zone default (CURRENT_TIMESTAMP
AT TIME ZONE 'UTC')
和
timestamp without time zone default (CURRENT_TIMESTAMP
AT TIME ZONE 'UTC' + 30 * interval '1 day')
不幸的是,这些都无法改变。 后者的目标是将来默认值为30天。 我试图在它上面使用hsqldb添加一个现代的junit测试框架。
为了使其符合hsqldb,需要将第一个定义更改为:
timestamp without time zone default CURRENT_TIMESTAMP
AT TIME ZONE INTERVAL '0:00' HOUR TO MINUTE
然而,尽我所能,我无法找到一种方法来复制添加30天的列
答案 0 :(得分:0)
您可以将TRIGGER用于此类默认值:
CREATE TRIGGER t BEFORE INSERT ON the_table
REFERENCING NEW AS newrow FOR EACH ROW
BEGIN ATOMIC
SET newrow.the_column = CURRENT_TIMESTAMP AT TIME ZONE INTERVAL '0:00' HOUR TO MINUTE + INTERVAL '30' DAY;
END
更新:PostgreSQL兼容性已经扩展到将来接受值。实施例
timestamp without time zone default (CURRENT_TIMESTAMP AT TIME ZONE INTERVAL '0:00' HOUR TO MINUTE + INTERVAL 30 DAY))