2012-05-23 9 views
6

Wird ein AFTER INSERT Trigger (in pl/PGsql geschriebene Funktion) in einer separaten Transaktion ausgelöst als die ursprüngliche Einfügung?NACH EINFÜGEN Trigger in separater Transaktion?

Worüber ich besorgt bin ist, wenn der Auslöser eine Ausnahme irgendeiner Art erfährt.
Kann der Auslöser zurückgesetzt werden, ohne dass der ursprüngliche Einsatz betroffen ist?

+1

Kann die separate Transaktion unabhängig von der Haupttransaktion zurückgesetzt werden? – wildplasser

Antwort

13

Alle PostgreSQL-Trigger werden in derselben Transaktion wie die Transaktion ausgeführt, die sie ausgelöst hat.

bearbeiten: Sie können auch verwenden LISTEN + NOTIFY eine Nachricht von Ihrem Trigger auf einen Code zu senden, die außerhalb der Transaktion ausführt. In diesem Fall wird die Nachricht nur zum Zeitpunkt eines erfolgreichen Commits geliefert. Fehler in Listenern führen zum Zurücksetzen der auslösenden Transaktion.

6

Trigger-Prozeduren werden in der gleichen Transaktion als zugeordnete auslösende Ereignisse ausgeführt. Die Auswirkungen einer Trigger-Prozedur können jedoch separat zurückgesetzt werden.

Sie müssen exception handling zum After-Trigger hinzufügen.

Verwandte Themen