sql >> Databáze >  >> RDS >> PostgreSQL

Na INSERT do tabulky INSERT data v připojených tabulkách

pgAdmin je pouze GUI. Máte na mysli PostgreSQL , RDBMS .

omezení cizího klíče , jako byste pouze vynucovali, že nelze použít žádnou hodnotu, která není přítomna v odkazovaném sloupci. Můžete použít ON UPDATE CASCADE nebo ON DELETE CASCADE k šíření změn z odkazovaného sloupce, ale nemůžete vytvářet nové řádky s tím, jak popisuješ. Máte špatný nástroj.

To, co popisujete, lze dosáhnout pomocí spouštěče . Dalším, složitějším způsobem by bylo RULE . Zde použijte spoušť.

V PostgreSQL potřebujete spouštěcí funkci , většinou pomocí plpgsql a spouštěč na stole, který toho využívá.

Něco jako:

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;

A spouštěč AFTER INSERT na tbl1 :

CREATE TRIGGER insaft
AFTER INSERT ON tbl1
FOR EACH ROW EXECUTE PROCEDURE trg_insert_row_in_tbl2();


  1. Nelze najít mysql.sock

  2. MySQL:Jak vybrat offset UTC a DST pro všechna časová pásma?

  3. Co znamená SELECT ... FOR XML PATH(' '),1,1)?

  4. MySQL Fire-And-Forget INSERT / UPDATE / DELETE - doporučuje se použití mysql_unbuffered_query?