now() default values are all showing same timestamp now() default values are all showing same timestamp postgresql postgresql

now() default values are all showing same timestamp


That is expected and documented behaviour:

From the manual:

Since these functions return the start time of the current transaction, their values do not change during the transaction. This is considered a feature: the intent is to allow a single transaction to have a consistent notion of the "current" time, so that multiple modifications within the same transaction bear the same time stamp.

If you want something that changes each time you run a statement, you need to use statement_timestamp() or even clock_timestamp() (again see the description in the manual)


now() and current_timestamp are STABLE functions returning the point in time when the transaction started as timestamptz.

Consider one of the other options PostgreSQL offers, in particular statement_timestamp(). The manual:

statement_timestamp() returns the start time of the current statement (more specifically, the time of receipt of the latest command message from the client)