From: | Atri Sharma <atri(dot)jiit(at)gmail(dot)com> |
---|---|
To: | fabriziomello(at)gmail(dot)com |
Cc: | Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>, Alfonso Afonso <aafonsoc(at)gmail(dot)com>, PostgreSQL General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Emulating trigger BEFORE SELECT behavior |
Date: | 2013-04-18 14:38:49 |
Message-ID: | CAOeZVidRs_dHbULZCvD5w-8iOedaHWZf5oTTLL5Mi-_afB1UTw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> Why you just create your track function and a view to call it?
>
> Example:
>
> BEGIN;
>
> CREATE TABLE foo (id SERIAL PRIMARY KEY, data TEXT);
> CREATE TABLE foo_track(tracktime TIMESTAMP DEFAULT now(), foo_row foo);
>
> INSERT INTO foo (data) SELECT 'Some Data'||id FROM generate_series(1,10) AS
> id;
>
> CREATE OR REPLACE FUNCTION foo_track_func(foo) RETURNS integer AS
> $$
> INSERT INTO foo_track(foo_row) VALUES ($1) RETURNING (foo_row).id
> $$
> LANGUAGE sql;
>
> CREATE VIEW v_foo AS SELECT foo.*, foo_track_func(foo.*) FROM foo;
>
> SELECT * FROM v_foo;
> SELECT * FROM foo_track;
>
> COMMIT;
>
>
Wow! It seems just right. Thanks, let me try it out.
Regards,
Atri
--
Regards,
Atri
l'apprenant
From | Date | Subject | |
---|---|---|---|
Next Message | Sofer, Yuval | 2013-04-18 15:39:16 | Primary DB stuck becuase of unavailable standby (synchronized streaming) - please help |
Previous Message | Fabrízio de Royes Mello | 2013-04-18 14:31:38 | Re: Emulating trigger BEFORE SELECT behavior |