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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Bernd Helmle 2008-08-06 08:24:24 Re: Re: [pgsql-de-allgemein] RE: [pgsql-de-allgemein] In Funktion prüfen ob Zeile existiert
Previous Message Albe Laurenz 2008-08-06 07:22:53 RE: [pgsql-de-allgemein] In Funktion prüfen ob Zeile existiert