2012-05-23 15 views
6

Un trigger AFTER INSERT (funzione scritta in pl/PGsql) attiva in una transazione separata rispetto all'inserto originale?Attivazione DOPO INSERIMENTO in una transazione separata?

Quello che mi preoccupa è se il trigger presenta un'eccezione di qualche tipo.
È possibile eseguire il rollback del trigger senza che l'inserto originale sia interessato?

+1

Questa transazione separata potrà essere ripristinata indipendentemente dalla transazione principale? – wildplasser

risposta

13

Tutti i trigger PostgreSQL vengono eseguiti nella stessa transazione della transazione che li ha attivati.

Modifica: È inoltre possibile utilizzare LISTEN + NOTIFY per inviare un messaggio dal grilletto per un codice che viene eseguito al di fuori della transazione. In tal caso, il messaggio verrà consegnato solo al punto di un commit riuscito. Gli errori negli ascoltatori non ripristinano la transazione di attivazione.

6

Le procedure di trigger vengono eseguite nella stessa transazione come eventi di attivazione associati. Ma gli effetti di una procedura di trigger possono essere ripristinati separatamente.

È necessario aggiungere exception handling al trigger successivo.

Problemi correlati