3

timestampのフィールドを持つログテーブルに書き込む関数がありますdefault current_timestamp。私の問題は、関数実行からのすべてのログが常に同じタイムスタンプを取得することです。実際には、実行開始時と実行終了時のログが少なくとも数分離れています。

問題があるかどうかはわかりませんが、ログテーブルへの書き込みは別の関数を介して行われますwrite_to_log

ログの書き込みにトランザクションの時間ではなく、リアルタイムを表示させるにはどうすればよいですか (私は推測します)。

4

2 に答える 2

4

statement_timestamp()または関数のいずれかが必要になりclock_timestamp()ます。これは実際には PostgreSQL の拡張機能です。これらは、トランザクション中に変更される可能性があり、実際に変更されます。

ジョナサンの回答とドキュメントも参照してください。

http://www.postgresql.org/docs/9.1/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT

于 2012-09-06T08:01:43.417 に答える
3

SQL 標準では、SQL ステートメントが瞬時に実行されるというフィクションをデータベース サーバーが維持する必要があります。したがって、ステートメントの実行中は時間が凍結されます。通常、(実際の、凍結されていない) 現在時刻を提供する非標準関数があることがわかりますが、標準で定義されているコア関数 (CURRENT_TIMESTAMP、CURRENT_TIME) は、ステートメントの実行中に変更することはできません。

于 2012-09-06T05:53:42.777 に答える