Postgresql
如何在時間戳數組中設置預設的 now() 時間戳?
我想要一個時間戳數組來跟踪一系列事件。第一個事件總是在創建行時發生,所以我希望使用初始預設值來實例化數組。我已經嘗試了這兩件事,它們都導致在
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[]
語法:create table messages( id serial primary key, val text not null, testarray timestamp[] not null default array[now()] ); insert into messages(val) values ('blah'); select * from messages;