pgAdmin è solo la GUI. Intendi PostgreSQL , il RDBMS .
Un vincolo di chiave esterna
, come hai solo imposto che nessun valore può essere utilizzato, che non è presente nella colonna di riferimento. Puoi usare ON UPDATE CASCADE
o ON DELETE CASCADE
per propagare le modifiche dalla colonna di riferimento, ma non puoi creare nuove righe con esso come descrivi tu. Hai sbagliato strumento.
Ciò che descrivi potrebbe essere ottenuto con un trigger
. Un altro modo più complesso sarebbe una RULE
. Vai con un trigger qui.
In PostgreSQL è necessaria una funzione trigger , principalmente utilizzando plpgsql e un trigger su un tavolo che ne fa uso.
Qualcosa come:
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;
E un trigger AFTER INSERT
su tbl1
:
CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();