You can set SERIALIZABLE
as the default isolation level in postgresql.conf
:
default_transaction_isolation = 'serializable'
This may confuse clients that assume READ COMMITTED
isolation, so IMO it's better to set it explicitly in your sessions.
As for the rest, per the manual:
The DEFERRABLE
transaction property has no effect unless the transaction is also SERIALIZABLE
and READ ONLY
... and given the properties of such transactions, I find it hard to imagine you wanting to make it the default. Are you perhaps confusing it with SET CONSTRAINTS DEFERRED
?
You can make transactions read-only and deferrable by default with:
transaction_read_only = on
transaction_deferrable = on
in postgresql.conf
but it's really a rather bad idea. Instead, just use an appropriate BEGIN
, or SET TRANSACTION
in your session before your first "real" SQL statement.
Serializable
.READ COMMITTED
, so they might not cope withSERIALIZABLE
tx aborts. Bad coding, but not uncommon.