PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

При INSERT към таблица INSERT данни в свързани таблици

pgAdmin е само GUI. Имате предвид PostgreSQL , RDBMS .

ограничение за чужд ключ , като имате само налага, че не може да се използва никаква стойност, която не присъства в референтната колона. Можете да използвате ON UPDATE CASCADE или ON DELETE CASCADE за разпространение на промени от референтната колона, но не можете да създавате нови редове с това, както описваш. Имате грешен инструмент.

Това, което описвате, може да се постигне с тригер . Друг, по-сложен начин би бил RULE . Отидете със спусък тук.

В PostgreSQL се нуждаете от тригерна функция , използвайки предимно plpgsql и тригер на маса, която го използва.

Нещо като:

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;

И тригер AFTER INSERT на 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. PL/pgSQL и SQL в PostgreSQL на същото ниво ли са като SQL/PSM стандарт, вместо само като SQL стандарт?

  2. PostgreSQL CROSS JOIN индексиране за производителност

  3. Запазете промените в базата данни vaadin

  4. Какво означава кодът след CREATE FUNCTION като низ?

  5. Грешка в Postgres след актуализиране на TimescaleDB на Ubuntu:файлът не е намерен