Re: Trigger und Funktion

From: Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org>
To: Bernd Helmle <mailings(at)oopsware(dot)de>
Cc: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: Trigger und Funktion
Date: 2007-03-08 14:23:43
Message-ID: 87zm6nstjk.fsf@gate450.dyndns.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Bernd Helmle writes:

> --On Donnerstag, März 08, 2007 13:20:24 +0100 Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org> wrote:
>> A. Kretschmer writes:
>>> am Wed, dem 07.03.2007, um 23:05:24 +0100 mailte udono folgendes:
>>>> Es soll die Regel gelten, dass nur Buchungssätze in die Tabelle
>>>> acc_trans dürfen (UPDATE, INSERT), deren Summe der Einzelbeträge
>>>> (amount) aller Teilbuchungen (trans_id) 0 ergibt.
>>>
>>> IMHO wäre hier ein ON COMMIT TRIGGER sinnvoll. Haben wir leider nicht.
>>
>> Hm, wenn man das "It is not intended for general use" in der Doku zu
>> "create constraint trigger" überliest, kann man damit scheinbar den
>> gewünschten Effekt erzielen:
>
> Hmm, an sich clever, aber ich sehe nicht wie man damit das
> Konsistenzproblem mit mehreren gleichzeitigen Transaktionen lösen
> kann.

Mir ist klar, daß die Aggregatfunktion selbst beim maximalen
Isolationslevel andere Tupel zu sehen bekommt, als dies bei echter
serieller Ausführung der Fall wäre, aber kann das bei meinem Beispiel
tatsächlich zu Inkonsistenzen führen?

Ich sehe im Moment nicht einmal, wie hier non-repeatable- oder
phantom-reads zu inkonsistenten Daten führen könnten, da durch den
Trigger garantiert wird, daß für nebenläufig committete Tupel
ebenfalls sum(amount) = 0 gilt, und sie somit keinen Einfluß auf das
Ergebnis der Konsistenzbedingung im Trigger einer zu committenden
Transaktion haben können.

Oder bin ich hier auf dem Holzweg?

Gruß
Andreas

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Thomas Markus 2007-03-08 14:50:39 Re: Trigger und Funktion
Previous Message udono 2007-03-08 14:20:46 Re: Trigger und Funktion