PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

DLA KAŻDEGO OŚWIADCZENIA przykład wyzwalacza

OLD i NEW mają wartość NULL lub nie są zdefiniowane w wyzwalaczu na poziomie instrukcji. Według dokumentacji:

Pogrubiony nacisk na moje.

Aż do Postgres 10 brzmi to nieco inaczej, ale z tym samym skutkiem:

Chociaż te zmienne rekordów nadal nie są przydatne w wyzwalaczach na poziomie instrukcji, bardzo nową funkcją jest:

Tabele przejść w Postgresie 10+

Postgres 10 wprowadził tabele przejść. Umożliwiają one dostęp do całego zestawu dotkniętych wierszy. Podręcznik:

Kliknij link do instrukcji, aby zobaczyć przykłady kodu.

Przykładowy wyzwalacz na poziomie instrukcji bez tabel przejść

Przed pojawieniem się tabel przejściowych były one jeszcze mniej powszechne. Przydatnym przykładem jest wysłanie powiadomień po niektórych poleceniach DML.
Oto podstawowa wersja tego, czego używam:

-- 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();

W przypadku Postgres 11 lub nowszego użyj równoważnej, mniej mylącej składni:

...
EXECUTE FUNCTION trg_notify_after();

Zobacz:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Notacja z podwójnym dwukropkiem (::) w SQL

  2. Ustawianie znacznika czasu wewnątrz transakcji

  3. Skrypt SQL do tworzenia skryptu wstawiania

  4. Optymalizacja zapytań w PostgreSQL. WYJAŚNIJ podstawy – część 2

  5. Ogranicz dołączenie do jednego wiersza