Re: serializable read only deferrable

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Kevin Grittner" <Kevin.Grittner@wicourts.gov>
Cc: "Florian Pflug" <fgp@phlo.org>, drkp@csail.mit.edu, pgsql-hackers@postgresql.org
Date: 2010-12-08T20:20:01Z
Lists: pgsql-hackers
"Kevin Grittner" <Kevin.Grittner@wicourts.gov> writes:
> Florian Pflug <fgp@phlo.org> wrote:
>> Say you've written a trigger which enforces some complex
>> constraint, but is correct only for SERIALIZABLE transactions. By
>> simply sticking a "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"
>> at the top of the trigger you'd both document that fact it is
>> correct only for SERIALIZABLE transactions *and* prevent
>> corruption should the isolation level be something else due to 
>> a pilot error. Nice, simply and quite effective.
 
> It would be great to have a way within a trigger, or possibly other
> functions, to assert that the transaction isolation level is
> serializable.  What gives me pause here is that the standard allows
> you to specify a more strict transaction isolation level within a
> subtransaction without error, so this way of spelling the feature is
> flirting with rather nonstandard behavior.

Yes.  This is not the way to provide a feature like that.
 
> Is there maybe a better way to check this?

You can always read the current setting and throw an error if you
don't like it.

			regards, tom lane