Bruce Momjian wrote:
<function>CURRENT_TIMESTAMP</> might not be the transaction start time on other database systems. For this reason, and for completeness, <function>transaction_timestamp</> is provided.
Well, transaction_timestamp() is even more unlikely to be the transaction start time on other database systems :) If the user wants non-standard syntax for getting the timestamp at which the current transaction began, we already have now().
One trick is that these should be the same: test=> SELECT statement_timestamp(), transaction_timestamp();
Should they be? It seems quite reasonable to me that the DBMS begins a transaction internally (setting transaction_timestamp()), and then a short while later begins executing the statement submitted by the user, at which point statement_timestamp() is set.
Perhaps ensuring they are identical for single-statement transactions is the best behavior, I just don't think this is required behavior.
And these should be the same: $ psql -c ' INSERT INTO t VALUES (statement_timestamp()); INSERT INTO t VALUES (statement_timestamp());' test INSERT 0 1
Uh, why should these be the same? -Neil ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend