Shorthand syntax for triggers

From: Joe Van Dyk <joe(at)tanga(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Shorthand syntax for triggers
Date: 2012-10-10 16:22:58
Message-ID: CACfv+pLWuA=XXXshz1NYKDNuB4R3G1r4NF-TRPVCdWbzU+ozSg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Instead of this:

create function some_trigger() returns trigger as $$
begin
if TG_OP = 'DELETE' then

insert into audits values (OLD.value);

else

insert into audits values (NEW.value);

end if;

return NULL;

end
$$ language plpgsql;

create trigger some_trigger after insert on products

for each row execute procedure some_trigger();

I wish I could do:

create trigger some_trigger after insert on products
execute procedure do $$ begin
insert into audits values (CHANGED.value);
end $$ language plpgsql;

Changes/improvements:

1. Triggers default to 'for each row'

2. Triggers can use anonymous functions

3. Triggers can access a special CHANGED value that's either NEW for insert
or updates, or OLD for deletes.

4. Default for 'after insert' triggers is to return null, as I believe it
doesn't matter what you return here.

5. Way less repetitive typing.

Thoughts? Is this a terrible idea?

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Sumit Raja 2012-10-10 16:25:51 FTS for a controlled vocab
Previous Message Bruce Momjian 2012-10-10 15:56:58 Re: pg_upgrade not detecting version properly