我的函数写入带有timestamp
default current_timestamp
字段的日志表。我的问题是来自函数运行的所有日志总是获得相同的时间戳,即使实际上是运行开始和运行结束时的日志,它们至少相隔几分钟。
我不知道是否重要但是写入日志表是通过另一个函数write_to_log
完成的。
如何让日志写入显示实时而不是(我猜)交易时间?
答案 0 :(得分:4)
您将需要statement_timestamp()
或clock_timestamp()
函数之一,这些函数确实是PostgreSQL扩展。这些可以在交易期间发生变化。
另见乔纳森的回答和文档:
http://www.postgresql.org/docs/9.1/static/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
答案 1 :(得分:3)
SQL标准要求数据库服务器维护SQL语句即时执行的虚构。因此,在语句运行时,时间被冻结。通常,您会发现确实提供(实际的,非冻结的)当前时间的非标准函数,但标准定义的核心函数(CURRENT_TIMESTAMP,CURRENT_TIME)不允许更改声明正在执行。