[pgsql-jp: 31493] Re: TRIGGERの中で使用する「 now」について

T.Suzuki t_suzuki @ kenwood-eng.co.jp
2003年 11月 18日 (火) 18:41:20 JST


鈴木@KEGと申します。

> 松本と申します。
> 
> TRIGGERの中で使用する「now」について教えてください。
> 
...skip
> 実行した時間が入る事を期待していたのですが、複数回実行
> すると2回目以降も1回目と同じ時間が入ってしまいます。
> 
> どうも同じコネクションにて複数回更新及び削除すると、
> 最初に取得された「now」の値が引き継がれているように
> 見えるのですが、何か設定を間違えているのでしょうか。
> 

まずは、マニュアルのこちらを参照してみて下さい。
http://www.postgresql.jp/document/pg734doc/user/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

CURRENT_TIMESTAMP だと正しく動く理由が記載されているはずです。


トリガーを拝見した所、

> CREATE FUNCTION test_func() RETURNS TRIGGER AS '
> BEGIN
>   INSERT INTO test_log
>       VALUES(old.s,old.update_time,CURRENT_USER,''now'');
>   RETURN NEW;
> END;
> ' LANGUAGE 'plpgsql';

VALUE句で now を指定していますが、
関数 now() にするべきではないでしょうか?

マニュアルによると、定数の解釈されるタイミングが異なるとあります。
# psql を立ち上げると、時刻が変わるのは何故かわかりません。

 -----------------------------------------
      鈴木 徹 (SUZUKI Toru)
      KENWOOD ENGINEERING CORPORATION
      E-mail:t_suzuki @ kenwood-eng.co.jp
 -----------------------------------------



pgsql-jp メーリングリストの案内