From: | Marcos Pegoraro <marcos(at)f10(dot)com(dot)br> |
---|---|
To: | Mitar <mmitar(at)gmail(dot)com> |
Cc: | Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com>, Postgres General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Determining if a table really changed in a trigger |
Date: | 2021-10-27 10:56:20 |
Message-ID: | CAB-JLwaABhUOttAKiioU+p-knaJV8SWwb8xEXo17Z+OHfp+06g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
>
> Oh, very interesting. I thought that this is not possible because WHEN
> condition on triggers does not have NEW and OLD. But this is a very
> cool way to combine rules with triggers, where a rule can still
> operate by row.
>
> That is not true
create table test(i integer);
create function test_old_new() returns trigger language plpgsql as $$
begin
raise notice '% - %', old.i, new.i;
return new;
end;$$;
CREATE TRIGGER testvalue BEFORE UPDATE OF i ON test FOR EACH ROW WHEN
(((new.i)::integer = 5::integer)) EXECUTE PROCEDURE test_old_new();
> insert into test values(4)
1 row affected in 52 ms
> update test set i = 6
1 row affected in 93 ms
> update test set i = 5
6 - 5 ->raise notice of procedure test_old_new was called only when new.i =
5
1 row affected in 48 ms
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tore Halvorsen | 2021-10-27 11:27:26 | pg_dump and pg_restore and foreign keys |
Previous Message | Jayadevan M | 2021-10-27 10:48:38 | Re: String comparison fails for some cases after migration |