Skip site navigation (1) Skip section navigation (2)

Re: [pgsql-de-allgemein] RE: [pgsql-de-allgemein] In Funktion prüfen ob Zeile existiert

From: Markus Wanner <markus(at)bluegap(dot)ch>
To: Albe Laurenz <laurenz(dot)albe(at)wien(dot)gv(dot)at>
Cc: Bernd Helmle *EXTERN* <mailings(at)oopsware(dot)de>, Tim Landscheidt <tim(at)tim-landscheidt(dot)de>, pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: [pgsql-de-allgemein] RE: [pgsql-de-allgemein] In Funktion prüfen ob Zeile existiert
Date: 2008-08-06 08:09:24
Message-ID: 48995C34.9010507@bluegap.ch (view raw or flat)
Thread:
Lists: pgsql-de-allgemein
Hallo,

Albe Laurenz wrote:
> Wenn man die Transaktion in Session A serealisierbar macht
> (START TRANSACTION ISOLATION LEVEL SERIALIZABLE in Session A),
> wird der Erfolg auch nicht glücklich machen, dann bekommt die
> Session A einen Error 40001.

..was doch ein SERIALIZATION FAILURE, und deshalb absolut korrekt ist an 
der Stelle. Bau auf Seite der Applikation einen retry-loop um die ganze 
Veranstaltung und gut (und performant).

Im READ COMMITTED mode waere die Alternative noch, mit SELECT .. FOR 
UPDATE zu testen, ob's solch ein Tuple schon gibt. Wenn ja, ein UPDATE 
drauf, wenn nein den INSERT. Weniger performant als SERIALIZABLE 
(pessimistic locking), aber Du sparst Dir damit evtl. den retry-loop in 
der App (zumindest wenn Du auch noch darauf achtest, keine deadlocks zu 
provozieren).

Gruesse

Markus Wanner

In response to

Responses

pgsql-de-allgemein by date

Next:From: Bernd HelmleDate: 2008-08-06 08:24:24
Subject: Re: Re: [pgsql-de-allgemein] RE: [pgsql-de-allgemein] In Funktion prüfen ob Zeile existiert
Previous:From: Albe LaurenzDate: 2008-08-06 07:22:53
Subject: RE: [pgsql-de-allgemein] In Funktion prüfen ob Zei?==?iso-8859-1?Q?le existiert

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group