Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1leEG9-0003Su-QM for pgsql-docs@arkaria.postgresql.org; Wed, 05 May 2021 09:56:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1leEFb-0002Oe-KE for pgsql-docs@arkaria.postgresql.org; Wed, 05 May 2021 09:55:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1leEFb-0002OW-8R for pgsql-docs@lists.postgresql.org; Wed, 05 May 2021 09:55:27 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1leEFX-0004sP-Io for pgsql-docs@lists.postgresql.org; Wed, 05 May 2021 09:55:26 +0000 Received: by mail-wm1-x32a.google.com with SMTP id n205so1059278wmf.1 for ; Wed, 05 May 2021 02:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:date:in-reply-to:references:user-agent :mime-version; bh=z3FBXmxX7mhukvp9hTeGcNzdoE9LFfxoiXUOKnjuFMc=; b=MfMJGYUr+FS7QnqC2RINbc912rQa5yNRnCvlo/8ipjtgk918Ytyf+g5PAfW4IDLxFt NH4reX2KVgYMhY5PDnq7pB9kvG8nsQ9s69PMi9hEThjdrbPu0zZdj8ejVevQR4XYoZDS b55yc8jo4VNpY89iD9e4scd9D4TQqa1Hs9GKQMQdPTESaxkGuPqiEUkX4QGV0y0CUmtw ZXUZjExEQxx3rJ58iZ2QnmjRNDFd2WOzkX6IL+f7ubEyoA1ugvotAkmHE4qzD6Z8nG5d g67x0LPPrcJ5IqyICzSEB46t29GhJaeep9IOBgH3Oe1R+rsEjOxHfcZiEVgscM8c4tYA 6/Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:in-reply-to :references:user-agent:mime-version; bh=z3FBXmxX7mhukvp9hTeGcNzdoE9LFfxoiXUOKnjuFMc=; b=OB5LQfrNDIMYPisLoVmU5k2TWtQ8jSmuPerOTh3ydJwpsU8ZhRmYJ4pwXEYvZWcnOm OmX9EUG/a+6xf0L/8WbdgzNqRaqHyYywdZu3DDxZ9AG5J65EwdmETndW+xaQX7OyYDMr AkX0ctoOpSq9A+T4vbafL4tNTgG9EhqmCmSjuRG7eyFnAo73E1xT+1mZjD2BogqUIbEL 67LF7bf+JrlRtJnoz3ESRO7F6S3L6hlx6shwrQJGmRGbpCOCjtOKBs0D1LQSIvArUWKw ILuu/8nluVaqQnC5u/WtvPfPIVO9VTPcgYkVdkaq9B7ORcE3UyCPfAxnnWwQDzvbCtK3 OrtQ== X-Gm-Message-State: AOAM532aqZfD0JlrdVuJwiIX8rEBxVFsUjbMwIQ+YTAnm7RDa2NLjOo/ V2/q48fOSMzgRsfs0uyy7I4wl0qFHNWe4NFqBe0= X-Google-Smtp-Source: ABdhPJwj8j34wX/iZg195bCKBw5/UbaNvMk72rDv6Py6mlRy+exkJeNsZMLnGWR8E1UkeS+/IZQxyA== X-Received: by 2002:a1c:a90c:: with SMTP id s12mr27495231wme.185.1620208521692; Wed, 05 May 2021 02:55:21 -0700 (PDT) Received: from localhost.localdomain (217-149-168-22.nat.highway.telekom.at. [217.149.168.22]) by smtp.gmail.com with ESMTPSA id t17sm14826387wrx.40.2021.05.05.02.55.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 May 2021 02:55:21 -0700 (PDT) Message-ID: <62219f2ce78faf09687d998f347c518b3c08d067.camel@cybertec.at> Subject: Re: Clarify how triggers relate to transactions From: Laurenz Albe To: him@nathanmlong.com, pgsql-docs@lists.postgresql.org Date: Wed, 05 May 2021 11:55:20 +0200 In-Reply-To: <1a565681fe54535d69e6418ef5ab55405b92beac.camel@cybertec.at> References: <161953360822.695.15805897835151971142@wrigleys.postgresql.org> <1a565681fe54535d69e6418ef5ab55405b92beac.camel@cybertec.at> Content-Type: multipart/mixed; boundary="=-Tj1zQI2F+8PTrQVyCakU" User-Agent: Evolution 3.36.5 (3.36.5-2.fc32) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-Tj1zQI2F+8PTrQVyCakU Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Wed, 2021-04-28 at 13:24 +0200, Laurenz Albe wrote: > On Tue, 2021-04-27 at 14:26 +0000, PG Doc comments form wrote: > > https://www.postgresql.org/docs/current/sql-createtrigger.html mentions the > > word "transaction" only once, in reference specifically to constraint > > triggers: "They can be fired either at the end of the statement causing the > > triggering event, or at the end of the containing transaction; in the latter > > case they are said to be deferred." > > > > If I understand correctly, it would be helpful to add this sentence or a > > corrected version of it: "Triggers always execute in the same transaction as > > the triggering event, and if a trigger fails, the transaction is rolled > > back." > > Good idea in principle, but I'd put that information on > https://www.postgresql.org/docs/current/trigger-definition.html Here is a proposed patch for this. Yours, Laurenz Albe --=-Tj1zQI2F+8PTrQVyCakU Content-Disposition: attachment; filename="0001-Document-how-triggers-interact-with-transactions.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Document-how-triggers-interact-with-transactions.patch"; charset="UTF-8" RnJvbSAzOTNjZGYzOGQ4MTJiMzM3YjUxZTNmNWNhMmFmNmNhMDUyZWQxYjE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXVyZW56IEFsYmUgPGxhdXJlbnouYWxiZUBjeWJlcnRlYy5h dD4KRGF0ZTogV2VkLCA1IE1heSAyMDIxIDExOjUzOjM4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g RG9jdW1lbnQgaG93IHRyaWdnZXJzIGludGVyYWN0IHdpdGggdHJhbnNhY3Rpb25zCgpDbGFyaWZ5 IHRoYXQgdHJpZ2dlcnMgYXJlIGFsd2F5cyBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBzYW1lCnRy YW5zYWN0aW9uIGFzIHRoZSB0cmlnZ2VyaW5nIHN0YXRlbWVudCwgd2l0aCBhbGwgY29uc2VxdWVu Y2VzLgoKQWRkIGFuIGluZGV4IHRlcm0gZm9yIGNvbnN0cmFpbnQgdHJpZ2dlcnMgYW5kIG1lbnRp b24gdGhlbQppbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0cmlnZ2VyIGJlaGF2aW9yLgotLS0KIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RyaWdnZXIuc2dtbCB8IDQgKysrKwogZG9jL3NyYy9zZ21s L3RyaWdnZXIuc2dtbCAgICAgICAgICAgIHwgNyArKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDEw IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90cmlnZ2Vy LnNnbWwKaW5kZXggNTYxYWY5ODlhNC4uZTQ2YjllNzlkYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfdHJpZ2dlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RyaWdnZXIuc2dtbApAQCAtMTc1LDYgKzE3NSwxMCBAQCBDUkVBVEUgWyBPUiBSRVBMQUNFIF0g WyBDT05TVFJBSU5UIF0gVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFt ZQogICA8L3BhcmE+CiAKICAgPHBhcmE+CisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnRy aWdnZXI8L3ByaW1hcnk+CisgICAgPHNlY29uZGFyeT5jb25zdHJhaW50IHRyaWdnZXI8L3NlY29u ZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgogICAgV2hlbiB0aGUgPGxpdGVyYWw+Q09OU1RSQUlOVDwv bGl0ZXJhbD4gb3B0aW9uIGlzIHNwZWNpZmllZCwgdGhpcyBjb21tYW5kIGNyZWF0ZXMgYQogICAg PGZpcnN0dGVybT5jb25zdHJhaW50IHRyaWdnZXI8L2ZpcnN0dGVybT4uICBUaGlzIGlzIHRoZSBz YW1lIGFzIGEgcmVndWxhciB0cmlnZ2VyCiAgICBleGNlcHQgdGhhdCB0aGUgdGltaW5nIG9mIHRo ZSB0cmlnZ2VyIGZpcmluZyBjYW4gYmUgYWRqdXN0ZWQgdXNpbmcKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4IDRh MGU3NDY1MmYuLjBjOGNjOGQwZmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNDcsNyArNDcsOSBAQAogICAg IHRoZSA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IHN0YXRlbWVudC4gIFRyaWdnZXJzIGNhbiBh bHNvIGZpcmUKICAgICBmb3IgPGNvbW1hbmQ+VFJVTkNBVEU8L2NvbW1hbmQ+IHN0YXRlbWVudHMu ICBJZiBhIHRyaWdnZXIgZXZlbnQgb2NjdXJzLAogICAgIHRoZSB0cmlnZ2VyJ3MgZnVuY3Rpb24g aXMgY2FsbGVkIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lIHRvIGhhbmRsZSB0aGUKLSAgICBldmVu dC4KKyAgICBldmVudC4gIEFsbCB0cmlnZ2VycyBhcmUgZXhlY3V0ZWQgYXMgcGFydCBvZiB0aGUg c2FtZSB0cmFuc2FjdGlvbiBhcworICAgIHRoZSBzdGF0ZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhl bSwgc28gaWYgZWl0aGVyIHRoZSBzdGF0ZW1lbnQgb3IgdGhlCisgICAgdHJpZ2dlciBjYXVzZXMg YW4gZXJyb3IsIHRoZSBlZmZlY3RzIG9mIGJvdGggd2lsbCBiZSByb2xsZWQgYmFjay4KICAgIDwv cGFyYT4KIAogICAgPHBhcmE+CkBAIC0xMTUsNiArMTE3LDkgQEAKICAgICA8bGl0ZXJhbD5CRUZP UkU8L2xpdGVyYWw+IHRyaWdnZXJzIGZpcmUgaW1tZWRpYXRlbHkgYmVmb3JlIGEgcGFydGljdWxh ciByb3cgaXMKICAgICBvcGVyYXRlZCBvbiwgd2hpbGUgcm93LWxldmVsIDxsaXRlcmFsPkFGVEVS PC9saXRlcmFsPiB0cmlnZ2VycyBmaXJlIGF0IHRoZSBlbmQgb2YKICAgICB0aGUgc3RhdGVtZW50 IChidXQgYmVmb3JlIGFueSBzdGF0ZW1lbnQtbGV2ZWwgPGxpdGVyYWw+QUZURVI8L2xpdGVyYWw+ IHRyaWdnZXJzKS4KKyAgICBUaGUgZXhlY3V0aW9uIG9mIDxsaXRlcmFsPkFGVEVSPC9saXRlcmFs PiB0cmlnZ2VycyBjYW4gYWxzbyBiZSBkZWZlcnJlZCB0byB0aGUKKyAgICBlbmQgb2YgdGhlIHRy YW5zYWN0aW9uIGlmIHRoZXkgd2VyZSBkZWZpbmVkIGFzCisgICAgPGZpcnN0dGVybT5jb25zdHJh aW50IHRyaWdnZXJzPC9maXJzdHRlcm0+LgogICAgIFRoZXNlIHR5cGVzIG9mIHRyaWdnZXJzIG1h eSBvbmx5IGJlIGRlZmluZWQgb24gdGFibGVzIGFuZAogICAgIGZvcmVpZ24gdGFibGVzLCBub3Qg dmlld3MuCiAgICAgPGxpdGVyYWw+SU5TVEVBRCBPRjwvbGl0ZXJhbD4gdHJpZ2dlcnMgbWF5IG9u bHkgYmUKLS0gCjIuMjYuMwoK --=-Tj1zQI2F+8PTrQVyCakU--