sql >> Database >  >> RDS >> PostgreSQL

Bij INSERT naar een tabel INSERT data in verbonden tabellen

pgAdmin is gewoon de GUI. Je bedoelt PostgreSQL , de RDBMS .

Een buitenlandse sleutelbeperking , alsof je alleen dwingt dat er geen waarde kan worden gebruikt, die niet aanwezig is in de kolom waarnaar wordt verwezen. U kunt ON UPDATE CASCADE . gebruiken of ON DELETE CASCADE om wijzigingen uit de kolom waarnaar wordt verwezen door te voeren, maar u kunt geen nieuwe rijen maken ermee zoals je beschrijft. Je hebt het verkeerde gereedschap.

Wat je beschrijft kan worden bereikt met een trigger . Een andere, meer complexe manier is een RULE . Ga hier met een trigger.

In PostgreSQL heb je een triggerfunctie nodig , meestal met behulp van plpgsql , en een trigger op een tafel die er gebruik van maakt.

Iets als:

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;

En een trigger AFTER INSERT op tbl1 :

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


  1. MySQL verbinden op PHP

  2. Converteer string naar datetime-waarde in LINQ

  3. SQL-query wijzigen van één voorwaarde naar meerdere

  4. Proberen een vervolgkeuzemenu in codeigniter te vullen met mysql-gegevens