Eu quero ter uma matriz de timestamp que rastreie uma série de eventos. O primeiro evento sempre acontece quando a linha é criada, então eu quero que a matriz seja instanciada com um valor padrão inicial. Eu tentei essas duas coisas e ambas resultam em now()
serem executadas no momento da instrução. É possível conseguir isso com um valor padrão simples ou preciso escrever um gancho?
# 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[]
Você precisa usar a
array[]
sintaxe:http://sqlfiddle.com/#!17/c3a31/4