Ich habe einen ziemlich einfachen Trigger:Postgres Trigger nach Einsatz Zugriff NEW
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 ist die folgenden:
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 etwas in dateien Einsetzen bekomme 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 erhalten? Ich habe mir die Dokumentation angesehen und es scheint, dass sie auf die gleiche Weise wie ich neue verwenden.
Haben Sie am Ende der Funktion auch 'RETURN NEW;' hinzugefügt? – kgrittn
@kgrittn: Das wäre der * nächste * Fehler, nein? Aber ja, das habe ich nicht einmal gesehen und es ist erwähnenswert, während wir hier sind. –
yeah Ich habe die Anweisung 'RETURN' hinzugefügt :) – soupdiver