Postgres-Trigger nach Insert-Zugriff auf NEW

Ich habe einen ziemlich einfachen Auslöser:

CREATE OR REPLACE FUNCTION f_log_datei()
RETURNS TRIGGER AS $
BEGIN
  INSERT INTO logs (aktion, tabelle, benutzer_id) VALUES(TG_OP, 'dateien', NEW.benutzer_id);
END; $ LANGUAGE 'plpgsql';

CREATE TRIGGER log_datei AFTER INSERT OR UPDATE OR DELETE
ON dateien
FOR EACH STATEMENT
EXECUTE PROCEDURE f_log_datei();

Meine Tabellenprotokolle lauten wie folgt:

CREATE TABLE logs(
    id int PRIMARY KEY DEFAULT NEXTVAL('logs_id_seq'),
    zeit timestamp DEFAULT now(),
    aktion char(6),
    tabelle varchar(32),
    alt varchar(256),
    neu varchar(256),
    benutzer_id int references benutzer(id)
);

Nach dem Einfügen von etwas in dateien erhalte ich folgende Fehlermeldung:

ERROR:  record "new" is not assigned yet
DETAIL:  The tuple structure of a not-yet-assigned record is indeterminate.
CONTEXT:  SQL statement "INSERT INTO logs (aktion, tabelle, benutzer_id) VALUES(TG_OP, 'dateien', NEW.benutzer_id)"
PL/pgSQL function "f_log_datei" line 3 at SQL statement

Warum habe ich diesen Fehler bekommen? Ich habe die Dokumentation durchgesehen und es scheint, dass sie wie ich neu verwenden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage