pgAdmin est juste l'interface graphique. Vous voulez dire PostgreSQL , le RDBMS .
Une contrainte de clé étrangère
, comme vous n'avez fait qu'imposer qu'aucune valeur ne peut être utilisée, qui n'est pas présente dans la colonne référencée. Vous pouvez utiliser ON UPDATE CASCADE
ou ON DELETE CASCADE
pour propager les modifications à partir de la colonne référencée, mais vous ne pouvez pas créer de nouvelles lignes avec comme tu le décris. Vous vous êtes trompé d'outil.
Ce que vous décrivez pourrait être réalisé avec un déclencheur
. Une autre manière, plus complexe, serait une RULE
. Allez avec un déclencheur ici.
Dans PostgreSQL, vous avez besoin d'une fonction de déclenchement , principalement en utilisant plpgsql , et un déclencheur sur une table qui en fait usage.
Quelque chose comme :
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;
Et un trigger AFTER INSERT
sur tbl1
:
CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();