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

Как да направя тригер за актуализиране на колона в друга таблица?

mydatabase е забележително неудачно име за схема .

Задействащата функция може да изглежда така:

CREATE OR REPLACE FUNCTION trg_upaft_upd_trip()
  RETURNS TRIGGER AS
$func$
BEGIN

UPDATE mydatabase.trip t    -- "mydatabase" = schema name (?!)
SET    last_updated = now()
WHERE  t.id = NEW.trip_id   -- guessing column names      

RETURN NULL;                -- calling this AFTER UPDATE

END
$func$  LANGUAGE plpgsql;

И трябва да се използва в тригер на всяка свързана таблица (не на trip себе си):

CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();

Трябва също да покриете INSERT и DELETE (и евентуално COPY ) на всички подтаблици ...

Този подход има много потенциални точки на провал. Като алтернатива помислете за заявка или изглед, който изчислява най-новия last_updated от подтаблици динамично. Ако актуализирате често, това може да е по-добрият подход.
Ако рядко UPDATE и SELECT често първият ви подход може да се изплати.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Методът за грешка на Postgres org.postgresql.jdbc.PgConnection.createClob() не е внедрен

  2. Как да заявя вложени масиви в колона на postgres json?

  3. заявка с подзаявка за броене, вътрешно присъединяване и група

  4. как да получите потребителски вход от qdateEdit и да го изберете от база данни в postgres

  5. Postgresql не изисква парола