pgAdmin ist nur die GUI. Sie meinen PostgreSQL , das RDBMS .
Eine Fremdschlüsseleinschränkung
, wie Sie haben, erzwingt nur, dass kein Wert verwendet werden kann, der nicht in der referenzierten Spalte vorhanden ist. Sie können ON UPDATE CASCADE
verwenden oder ON DELETE CASCADE
um Änderungen aus der referenzierten Spalte zu propagieren, aber Sie können keine neuen Zeilen erstellen damit wie du es beschreibst. Sie haben das falsche Werkzeug.
Was Sie beschreiben, könnte mit einem Trigger
erreicht werden . Ein anderer, komplexerer Weg wäre eine RULE
. Gehen Sie hier mit einem Trigger.
In PostgreSQL benötigen Sie eine Trigger-Funktion , meistens mit plpgsql , und einen Trigger auf einem Tisch, der davon Gebrauch macht.
Etwas wie:
CREATE OR REPLACE FUNCTION trg_insert_row_in_tbl2()
RETURNS trigger AS
$func$
BEGIN
INSERT INTO tbl2 (my_id, col1)
VALUES (NEW.my_id, NEW.col1) -- more columns?
RETURN NEW; -- doesn't matter much for AFTER trigger
END
$func$ LANGUAGE plpgsql;
Und einen Trigger AFTER INSERT
auf tbl1
:
CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();