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?
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 |