this a test case :
CREATE TABLE tab
(
_id bigserial NOT NULL,
_name text,
CONSTRAINT tab_pkey PRIMARY KEY (_id)
);
CREATE TABLE tab_s1
(
CONSTRAINT tab_s1_check CHECK (1 = 1)
)
INHERITS (tab);
CREATE OR REPLACE VIEW v_tab AS
SELECT tab._id,
tab._name
FROM tab;
CREATE OR REPLACE FUNCTION tab_insert()
RETURNS trigger AS
$BODY$
BEGIN
INSERT INTO tab_s1 VALUES ((NEW).*);
RETURN NEW;
END $BODY$
LANGUAGE plpgsql;
CREATE TRIGGER tab_trigger
INSTEAD OF INSERT ON v_tab
FOR EACH ROW EXECUTE PROCEDURE tab_insert();
-- the query fail because _id is null
insert into v_tab(_name) values ('uuuu');