Trigger

Regeln für Trigger

  • insert, update und delete-Aktionen

  • können vor oder nach der Aktion ausgelöst werden

  • können auf ein Statement reagieren

  • können auf Tupel reagieren

  • sind Funktionen, die keine Parameter kennen

Beispieltabelle erstellen

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

Tabelle für das Protokoll

CREATE TABLE AUDIT(
   EMP_ID INT NOT NULL,
   ENTRY_DATE TEXT NOT NULL
);

Die Trigger-Funktion

CREATE OR REPLACE FUNCTION auditlogfunc() RETURNS TRIGGER AS $example_table$
   BEGIN
      INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$example_table$ LANGUAGE plpgsql;

Trigger an Tabelle binden

CREATE TRIGGER example_trigger AFTER INSERT ON COMPANY
FOR EACH ROW EXECUTE PROCEDURE auditlogfunc();

Änderungsaktion mit Protokoll

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Paul', 32, 'California', 20000.00 );

Trigger wieder entfernen

DROP TRIGGER example_trigger on company;

welche Trigger hat die Tabelle?

\d company

Welche Trigger befinden sich im System?

SELECT * FROM pg_trigger;