PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Na WSTAW do tabeli WSTAW dane w połączonych tabelach

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();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamień znaki Unicode w PostgreSQL

  2. Klucz podstawowy z porządkowaniem ASC lub DESC?

  3. Jak zachować dane, które nie są sortowane?

  4. PostgreSQL - utwórz nową bazę danych za pomocą interfejsu użytkownika pgAdmin

  5. Postgres:indeks podobieństwa cosinusowego tablic zmiennoprzecinkowych dla wyszukiwania jeden-do-wielu