Doc: clarify how triggers relate to transactions.
authorTom Lane
Wed, 1 Sep 2021 21:24:59 +0000 (17:24 -0400)
committerTom Lane
Wed, 1 Sep 2021 21:24:59 +0000 (17:24 -0400)
Laurenz Albe, per gripe from Nathan Long.

Discussion: https://postgr.es/m/161953360822.695.15805897835151971142@wrigleys.postgresql.org

doc/src/sgml/ref/create_trigger.sgml
doc/src/sgml/trigger.sgml

index 3f4b5acc7b7ed9ce41b1e9aea928c09acbb77827..e4afa1c01d3095e5abfe6bf53810888982a88154 100644 (file)
@@ -175,6 +175,10 @@ CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER name
   
 
   
+   
+    trigger
+    constraint trigger
+   
    When the CONSTRAINT option is specified, this command creates a
    constraint trigger.  This is the same as a regular trigger
    except that the timing of the trigger firing can be adjusted using
index f1a845f756864d4e2d0e085786c13e71da60a24f..7e2654493bb765faceb5d9211418ad2918d0cab1 100644 (file)
     row in the view is identified as needing to be operated on.
    
 
+   
+    The execution of an AFTER trigger can be deferred
+    to the end of the transaction, rather than the end of the statement,
+    if it was defined as a constraint trigger.
+    In all cases, a trigger is executed as part of the same transaction as
+    the statement that triggered it, so if either the statement or the
+    trigger causes an error, the effects of both will be rolled back.
+   
+
    
     A statement that targets a parent table in an inheritance or partitioning
     hierarchy does not cause the statement-level triggers of affected child