Re: Insert rule and seqences
От | Jochem van Dieten |
---|---|
Тема | Re: Insert rule and seqences |
Дата | |
Msg-id | 3B93D789.4060305@oli.tudelft.nl обсуждение исходный текст |
Ответ на | Insert rule and seqences (Bo Lorentsen <bl@netgroup.dk>) |
Список | pgsql-novice |
Bo Lorentsen wrote: > > CREATE SEQUENCE entity_seq; > > CREATE TABLE A ( > id INTEGER DEFAULT nextval( 'entity_seq' ), > name TEXT > ); > > CREATE TABLE B ( > name TEXT, > a_ref INTEGER NOT NULL -- REFERENCES A( id ) > ); > > CREATE RULE insert_on_a > AS ON INSERT > TO A ( > INSERT INTO B name, a_ref VALUES( name, currval( 'entity_seq' )); > ); > > Is this all wrong, or is the another way to get the new 'id' value from > the A table ? I wouldn't use a RULE but a TRIGGER. Something like the one below (please check syntax ;) ). CREATE TRIGGER tr_insert_on_a AFTER INSERT OR UPDATE ON A FOR EACH ROW EXECUTE PROCEDURE fn_insert_on_a(); CREATE function fn_insert_on_a() RETURNS OPAQUE AS ' BEGIN INSERT INTO B name, a_ref VALUES(NEW.name, NEW.id); END; ' LANGUAGE 'plpgsql'; Jochem
В списке pgsql-novice по дате отправления: