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.
- 1583 megtekintés
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;
- A hozzászóláshoz be kell jelentkezni
Szia!
A VIEW alapján akartam egy sima INSERT INTOval belepakolni, de ez a függvény megoldás jobbnak tűnik - nem is értem hogy nem jutott eszembe.
Az UPDATE a VIEW-ra kiválóan megy, az INSERT-re ez viszont nagyon jó megoldás lesz, köszönöm!
- A hozzászóláshoz be kell jelentkezni