現象を確認したが、謎。
CREATE TABLE LIKEでも同様。
create temp table hoge_test(
app_id int,
hoge int DEFAULT 0
);
\d hoge_test
列 | 型 | 修飾語
--------+---------+-----------
app_id | integer |
hoge | integer | default 0
CREATE TEMP TABLE moge_test(like hoge_test);
\d moge_test
列 | 型 | 修飾語
--------+---------+--------
app_id | integer |
hoge | integer |
と思ったら、postgresqlのリファレンスに書いてありました。
INCLUDING DEFAULTSをつけないとデフォルト式はスルーされるみたい。
https://www.postgresql.jp/document/8.0/html/sql-createtable.html
CREATE TEMP TABLE hogehoge_test(like hoge_test INCLUDING DEFAULTS);
\d hogehoge_test
列 | 型 | 修飾語
--------+---------+-----------
app_id | integer |
hoge | integer | default 0
今度はうまく行ったみたい。
この辺、知ってないと危険が大きい。