'Will multiple calls to `now()` in a single PostgreSQL query always give the same result?
I want to insert one row in a table; e.g.:
INSERT INTO some_table VALUES (now(), now());
I want the date value in both the columns to be equal. Is the above query safe for this requirement? Or should I use other alternatives like sub-query/CTE:
INSERT INTO some_table (select t.now, t.now from (select now()) as t);
In general, how do these functions get invoked in SQL internally? How is the sequence (left to right/right to left) of functions to be invoked decided? Is a given function just called once and the return value cached for a single query? Is it vendor-specific?
Solution 1:[1]
The documentation says about now():
now() is a traditional PostgreSQL equivalent to transaction_timestamp()
And about transaction_timestamp():
These SQL-standard functions all return values based on the start time of the current transaction
So within one SQL statement, now() will always return the same value.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
