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 回答