public inbox for [email protected]  
help / color / mirror / Atom feed
From: Jian He <[email protected]>
To: [email protected]
Subject: 43.10 Trigger Functions one sentences kind of not easy to understand.
Date: Wed, 27 Apr 2022 17:09:01 +0530
Message-ID: <CAMV54g3BuwvPqB7x+EWZX8fUCL=FYxdk1c0VG4ZiZ6HeCPxP4Q@mail.gmail.com> (raw)

https://www.postgresql.org/docs/current/plpgsql-trigger.html

>
> Row-level triggers fired BEFORE can return null to signal the trigger
> manager to skip the rest of the operation for this row (i.e., subsequent
> triggers are not fired, and the INSERT/UPDATE/DELETE does not occur for
> this row). If a nonnull value is returned then the operation proceeds with
> that row value. *Returning a row value different from the original value
> of NEW alters the row that will be inserted or updated. *Thus, if the
> trigger function wants the triggering action to succeed normally without
> altering the row value, NEW (or a value equal thereto) has to be
> returned. To alter the row to be stored, it is possible to replace single
> values directly in NEW and return the modified NEW, or to build a
> complete new record/row to return. In the case of a before-trigger on
> DELETE, the returned value has no direct effect, but it has to be nonnull
> to allow the trigger action to proceed. Note that NEW is null in DELETE
> triggers, so returning that is usually not sensible. The usual idiom in
> DELETE triggers is to return OLD.
>

I just want confirm the highlighted sentence  is equivalent as the
following sql code:

begin;
> CREATE TABLE documents (
>     docdesc text,
>     misc text,
>     modification_time timestamp with time zone DEFAULT now()
> );
> CREATE FUNCTION documents_update_mod_time() RETURNS trigger
> AS $$
>     begin
>     new.modification_time := now();
>
    return new;
>
    end
> $$
>     LANGUAGE plpgsql;
> CREATE TRIGGER documents_modification_time
>     BEFORE INSERT OR UPDATE ON documents
>     FOR EACH ROW
>     EXECUTE PROCEDURE documents_update_mod_time();
> commit;
>

as a non-native english speaker, I kind of feel this sentence quite hard to
understand....


reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected]
  Subject: Re: 43.10 Trigger Functions one sentences kind of not easy to understand.
  In-Reply-To: <CAMV54g3BuwvPqB7x+EWZX8fUCL=FYxdk1c0VG4ZiZ6HeCPxP4Q@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox