在单个postgres查询中多次调用`now()`总会得到相同的结果吗?

时间:2018-04-20 06:58:27

标签: sql database postgresql relational-database persistence

我想在表格中插入一行:

INSERT INTO some_table VALUES (now(), now());

我希望两列中的日期值相等。以上查询对此要求是否安全?或者我应该使用其他替代方案,如子查询/ CTE:

INSERT INTO some_table (select t.now, t.now from (select now()) as t);

一般来说,如何在SQL内部调用这些函数? 如何调用函数的序列(从左到右/从右到左)?是否只调用一次给定函数并为单个查询缓存返回值?它是供应商特定的吗?

非常欢迎任何阅读链接。

1 个答案:

答案 0 :(得分:9)

documentationnow()

  

now()是传统的PostgreSQL等价物   transaction_timestamp()

关于transaction_timestamp()

  

这些SQL标准函数都根据当前事务的开始时间返回值

因此,在一个SQL语句中,now()将始终返回相同的值。