我想要一个时间戳数组来跟踪一系列事件。第一个事件总是在创建行时发生,所以我希望使用初始默认值来实例化数组。我已经尝试了这两件事,它们都导致在now()
声明时被执行。我有可能用一个简单的默认值来实现这一点,还是我需要写一个钩子?
# ALTER TABLE messages ADD COLUMN testarray TIMESTAMP[] DEFAULT '{NOW()}';
ALTER TABLE
# ALTER TABLE messages ADD COLUMN testarray2 TIMESTAMP[] DEFAULT '{"NOW()"}';
ALTER TABLE
freedom_development=# \d messages
Table "public.messages"
Column | Type | Modifiers
---------------+-------------------------------+-------------------------------------------------------------------------
id | integer | not null default nextval('messages_id_seq'::regclass)
testarray | timestamp without time zone[] | default '{"2017-12-30 21:00:09.622951"}'::timestamp without time zone[]
testarray2 | timestamp without time zone[] | default '{"2017-12-30 21:00:19.936001"}'::timestamp without time zone[]
您需要使用以下
array[]
语法:http://sqlfiddle.com/#!17/c3a31/4