pgAdmin is gewoon de GUI. Je bedoelt PostgreSQL , de RDBMS .
Een buitenlandse sleutelbeperking
, alsof je alleen dwingt dat er geen waarde kan worden gebruikt, die niet aanwezig is in de kolom waarnaar wordt verwezen. U kunt ON UPDATE CASCADE
. gebruiken of ON DELETE CASCADE
om wijzigingen uit de kolom waarnaar wordt verwezen door te voeren, maar u kunt geen nieuwe rijen maken ermee zoals je beschrijft. Je hebt het verkeerde gereedschap.
Wat je beschrijft kan worden bereikt met een trigger
. Een andere, meer complexe manier is een RULE
. Ga hier met een trigger.
In PostgreSQL heb je een triggerfunctie nodig , meestal met behulp van plpgsql , en een trigger op een tafel die er gebruik van maakt.
Iets als:
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;
En een trigger AFTER INSERT
op tbl1
:
CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();