PostgreSQL RULE ON INSERT , Foreign key

Sziasztok!

Egy ideje böngészem a netet, de sajnos nem leltem megoldásra, ezért hátha ti tudtok nekem segíteni.

Van 3 táblám, amelyből csináltam 1 nézetet.
A nézetre pakoltam egy INSERT szabályt (azaz beszúrás esetén EZT hajtja végre)

A szabály így néz ki:

1.) Beszúr egy sort egy táblába, amelynek első mezője egy SERIAL
2.) Beszúr egy sort a másik táblába, amelyben egy mező FOREIGN KEY-ként hivatkozik az előbb használt SERIAL mező értékére

és itt el is akad a dolog: nem létezik a hivatkozott idegen kulcs az első táblában.

Azt megpróbáltam, hogy a két INSERT közé rakok egy COMMIT; parancsot, de nem fogadta el.

Az ötleteket, javaslatokat köszönettel várom.

Hozzászólások

Nem teljesen értem a view hogy jön a képbe, de 3 táblával a következő nálam megy (Postgesql 9). Ez egy after insert trigger table1-en: sorokat tol be table2-be és table3-ba. FK van table3-ból table2-be és table2-ből table1-be. Mind 3 táblában van serial típusú PK.


CREATE OR REPLACE FUNCTION p_table2_insert()
  RETURNS trigger AS
$BODY$
  DECLARE 
    t2 RECORD;
  BEGIN
    INSERT INTO table2 (table1_id) VALUES (NEW.ID) RETURNING * INTO t2;
    INSERT INTO table3 (table2_id) VALUES (t2.ID);
    INSERT INTO table2 (table1_id) VALUES (NEW.ID) RETURNING * INTO t2;
    INSERT INTO table3 (table2_id) VALUES (t2.ID);
    RETURN NEW;
  END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION p_table2_insert() OWNER TO pgtest;