Re: Wrong insert before trigger examples - Mailing list pgsql-docs

From Bruce Momjian
Subject Re: Wrong insert before trigger examples
Date
Msg-id 20200313225637.GB10187@momjian.us
Whole thread Raw
In response to Wrong insert before trigger examples  (PG Doc comments form <noreply@postgresql.org>)
Responses Re: Wrong insert before trigger examples  (Bruce Momjian <bruce@momjian.us>)
List pgsql-docs
On Wed, Feb  5, 2020 at 09:36:49AM +0000, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
> 
> Page: https://www.postgresql.org/docs/12/ddl-partitioning.html
> Description:
> 
> Hi,
> 
> I just noticed that the example in 5.11.3.1. Point 5 contains an "before
> insert trigger" which will not work anymore (I think since Postgres 12).
> This trigger is not needed anymore and causes an error message.

Sorry for the delay in replying.  I was able to successfully create the
trigger:

    CREATE TABLE measurement (
        city_id         int not null,
        logdate         date not null,
        peaktemp        int,
        unitsales       int
    );

    CREATE TABLE measurement_y2006m02 (
        CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' )
    ) INHERITS (measurement);

    CREATE INDEX measurement_y2006m02_logdate ON measurement_y2006m02 (logdate);

    CREATE OR REPLACE FUNCTION measurement_insert_trigger()
    RETURNS TRIGGER AS $$
    BEGIN
        INSERT INTO measurement_y2008m01 VALUES (NEW.*);
        RETURN NULL;
    END;
    $$
    LANGUAGE plpgsql;

    CREATE TRIGGER insert_measurement_trigger
        BEFORE INSERT ON measurement
        FOR EACH ROW EXECUTE FUNCTION measurement_insert_trigger();

There are actually two definitions of 'measurement' in the docs above,
and you might have used the partitioned one:

    CREATE TABLE measurement (
        city_id         int not null,
        logdate         date not null,
        peaktemp        int,
        unitsales       int
    ) PARTITION BY RANGE (logdate);

I have developed the attached patch to clarify which definition to use. 
I am not sure if more extensive changes are needed.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +

Attachment

pgsql-docs by date:

Previous
From: Tom Lane
Date:
Subject: Re: 37.10.3
Next
From: Bruce Momjian
Date:
Subject: Re: Examples required in || 5.10. Table Partitioning