HSQLDB中的Postgresql时间戳和未来的默认值

时间:2015-02-19 20:45:42

标签: postgresql hsqldb

我正在使用一个使用列定义的遗留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天的列

1 个答案:

答案 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))