sql >> Base de Datos >  >> RDS >> PostgreSQL

En INSERTAR en una tabla INSERTAR datos en tablas conectadas

pgAdmin es solo la GUI. Te refieres a PostgreSQL , el RDBMS .

Una restricción de clave externa , como si solo hiciera cumplir que no se puede usar ningún valor, que no está presente en la columna a la que se hace referencia. Puedes usar ON UPDATE CASCADE o ON DELETE CASCADE para propagar los cambios desde la columna a la que se hace referencia, pero no puede crear nuevas filas con eso como lo describes. Tienes la herramienta equivocada.

Lo que describe podría lograrse con un disparador . Otra forma más compleja sería una RULE . Vaya con un gatillo aquí.

En PostgreSQL, necesita una función de activación , principalmente usando plpgsql y un activador sobre una mesa que hace uso de ella.

Algo como:

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;

Y un activador AFTER INSERT en tbl1 :

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