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

ЗА ВСЯКО ИЗЯВЛЕНИЕ пример за тригер

OLD и NEW са нулеви или не са дефинирани в тригер на ниво оператор. Съгласно документацията:

Удебелен акцент е мой.

До Postgres 10 това се четеше малко по-различно, но почти със същия ефект:

Въпреки че тези променливи на запис все още не са от полза за задействания на ниво израз, нова функция е:

Таблици за преход в Postgres 10+

Postgres 10 въведе таблици за преход. Те позволяват достъп до целия набор от засегнати редове. Ръководството:

Следвайте връзката към ръководството за примерни кодове.

Примерен тригер на ниво оператор без таблици за преход

Преди появата на преходните таблици те бяха още по-рядко срещани. Полезен пример е да изпратите известия след определени DML команди.
Ето основна версия на това, което използвам:

-- Generic trigger function, can be used for multiple triggers:
CREATE OR REPLACE FUNCTION trg_notify_after()
  RETURNS trigger
  LANGUAGE plpgsql AS
$func$
BEGIN
   PERFORM pg_notify(TG_TABLE_NAME, TG_OP);
   RETURN NULL;
END
$func$;

-- Trigger
CREATE TRIGGER notify_after
AFTER INSERT OR UPDATE OR DELETE ON my_tbl
FOR EACH STATEMENT
EXECUTE PROCEDURE trg_notify_after();

За Postgres 11 или по-нова версия използвайте еквивалентния, по-малко объркващ синтаксис:

...
EXECUTE FUNCTION trg_notify_after();

Вижте:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pgAdmin III :Не се показват сървъри

  2. Инсталирането на PostgresSQL 9.5 е неуспешно:„инициализацията на клъстера на базата данни е неуспешна“ MAC os (голяма версия 11.4)

  3. Транзакциите не работят за моята MySQL DB

  4. Възможно ли е да промените дизайна на таблицата на PostgreSQL с помощта на LibreOffice Base?

  5. PostgreSQL - DISTINCT ON и GROUP BY синтаксис