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

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Trigger und Funktion



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



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group