On 12/17/13, 4:53 AM, Robert Haas wrote:
Well, I'm specifically thinking of master partition tables.  In that
case, we really want an INSTEAD OF trigger.

/me scratches head.

So, put a BEFORE trigger, and make it return NULL.  Same effect,
different notation.

But it's not the same effect at all, that's the point:

=# create view foov as select 1 as a;
CREATE VIEW

=# create function insteadof() returns trigger as $$
$# begin
$# -- INSERT here
$# return new;
$# end
$# $$ language plpgsql;
CREATE FUNCTION

=# create function before() returns trigger as $$
$# begin
$# -- INSERT here
$# return null;
$# end
$# $$ language plpgsql;
CREATE FUNCTION

=# create trigger t1 instead of insert on foov for each row execute procedure insteadof();
CREATE TRIGGER

=# create trigger t2 before insert on bart for each row execute procedure before();
CREATE TRIGGER

=# insert into foov values (1) returning *;
 a
---
 1
(1 row)

INSERT 0 1

local:marko=#* insert into bart values (1) returning *;
 a
---
(0 rows)

INSERT 0 0



Regards,
Marko Tiikkaja


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to