pgAdmin to tylko GUI. Masz na myśli PostgreSQL , RDBMS .
ograniczenie klucza obcego
, tak jak masz tylko wymusza, że nie można użyć żadnej wartości, która nie jest obecna w kolumnie, do której istnieje odwołanie. Możesz użyć ON UPDATE CASCADE
lub ON DELETE CASCADE
do propagowania zmian z kolumny, do której istnieje odwołanie, ale nie można tworzyć nowych wierszy z tym, jak opisujesz. Masz niewłaściwe narzędzie.
To, co opisujesz, można osiągnąć za pomocą wyzwalacza
. Innym, bardziej złożonym sposobem byłaby RULE
. Idź z wyzwalaczem tutaj.
W PostgreSQL potrzebujesz funkcji wyzwalacza , głównie przy użyciu plpgsql oraz wyzwalacz na stole, który z niego korzysta.
Coś takiego:
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;
I wyzwalacz AFTER INSERT
na tbl1
:
CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();