[pgsql-jp: 31495] Re: TRIGGERの中で使用する「 now」について
bxcel
bxcel @ prophet.jp
2003年 11月 18日 (火) 20:22:03 JST
松本と申します。
鈴木さん情報ありがとうございました。
> まずは、マニュアルのこちらを参照してみて下さい。
> http://www.postgresql.jp/document/pg734doc/user/functions-datetime
> .html#FUNCTIONS-DATETIME-CURRENT
>
> CURRENT_TIMESTAMP だと正しく動く理由が記載されているはずです。
拝見させて頂きました。
「now() と CURRENT_TIMESTAMP は同じ」という事と、
「トランザクションが開始された時間」という事が読み取れました。
今回の場合、トランザクションは明示的に指定していないので、
update文ごとに異なるトランザクションという扱いになると
思いますので、「トランザクションが開始された時間」となって
いないように思うのですが。
> VALUE句で now を指定していますが、
> 関数 now() にするべきではないでしょうか?
now()に書き換えてみましたが、結果は同じでした。
さらにいろいろとやってみた所、現在時刻をINSERT文のVALUES句に
書いた場合と、テーブルのDEFAULTに書いた場合で違いはなく、
CURRENT_TIMESTAMPとnow()で動作が異なっているようです。
| now() | CURRENT_TIMESTAMP
--------+-------+------------------
DEFAULT | ● | ○
INSERT | ● | ○
という関係のようです。
つまり、CURRENT_TIMESTAMPを使用すれば、INSERT文のVALUES句に
書いてもテーブルのDEFAULTに書いても意図した結果となるようです。
ただ、こうなるとnow()がいつの時間を示すのか気になりますね。
pgsql-jp メーリングリストの案内