sql >> Databasteknik >  >> RDS >> PostgreSQL

På INSERT till en tabell INSERT data i anslutna tabeller

pgAdmin är bara GUI. Du menar PostgreSQL , RDBMS .

En restriktion för främmande nyckel , som du bara har tvingar fram att inget värde kan användas, som inte finns i den refererade kolumnen. Du kan använda ON UPDATE CASCADE eller ON DELETE CASCADE för att sprida ändringar från den refererade kolumnen, men du kan inte skapa nya rader med det som du beskriver. Du har fel verktyg.

Det du beskriver kan uppnås med en trigger . Ett annat, mer komplext sätt skulle vara en RULE . Gå med en trigger här.

I PostgreSQL behöver du en triggerfunktion , mestadels med plpgsql , och en trigger på ett bord som använder det.

Något i stil med:

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;

Och en trigger AFTER INSERTtbl1 :

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


  1. Beräkna löpande total / löpande balans

  2. Hur man hämtar ett OBJECT_NAME() från en annan databas i SQL Server

  3. Hur man ansluter Android till mysql-databas säkert

  4. MySQL-startfel - rotelement saknas