Trigger wird nicht aufgerufen

juedan

Benutzer
Beiträge
6
Hallo Forum,

Vorgeschichte: Ich habe die umfangreiche Tabelle t_warnmeldung, in der Warndaten vom DWD gespeichert sind. In einer zweiten Tabelle möchte ich festhalten, wann eine Warnzelle aktualisiert wurde. Dies wird für ein Benachrichtigungssystem benötigt, das per Cronjob diese Tabelle ausliest.
Ich habe nun einen Trigger erstellt, der bei der Tabelle mit den Warndaten anspringen soll, sobald ein INSERT/UPDATE/DELETE ausgeführt wird. Die Trigger-Funktion soll dann in die Nachrichtentabelle protokollieren.

1. Trigger-Funktion:
CREATE OR REPLACE FUNCTION trWarnzelle() RETURNS TRIGGER AS $$
BEGIN
RAISE NOTICE 'Funktion: %', TG_OP;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;

2. Anmelden des Triggers:
CREATE TRIGGER trWarnzelle
AFTER INSERT OR UPDATE OR DELETE ON t_warnmeldung
FOR EACH ROW EXECUTE PROCEDURE trWarnzelle();

Wird nun ein INSERT/UPDATE/DELETE auf die Tabelle t_warnmeldung ausgeführt, wird der Trigger nicht aufgerufen.
Es gibt keinerlei Meldungen oder Fehlermeldungen im Logfile, Konsole, oder sonst wo. Selbst bei einem bewusst eingebauten Fehler in der Trigger-Funktion gibt es keine Meldung.

Woran liegt es, dass der trigger nicht ausgeführt wird?

Danke im voraus für die Antworten.

Grüßle J.
 
Werbung:
Kannst Du belegen, daß der TRIGGER nicht aufgerufen wird?

Code:
test=# CREATE OR REPLACE FUNCTION trWarnzelle() RETURNS TRIGGER AS $$
test$# BEGIN
test$# RAISE NOTICE 'Funktion: %', TG_OP;
test$# RETURN NULL;
test$# END;
test$# $$ LANGUAGE plpgsql;
CREATE FUNCTION
test=*# commit;
COMMIT
test=# create table t_warnmeldung(id int, val text);
CREATE TABLE
test=*# commit;
COMMIT
test=# CREATE TRIGGER trWarnzelle
test-# AFTER INSERT OR UPDATE OR DELETE ON t_warnmeldung
test-# FOR EACH ROW EXECUTE PROCEDURE trWarnzelle();
CREATE TRIGGER
test=*# commit;
COMMIT
test=# insert into t_warnmeldung values (1, 'text 1');
HINWEIS:  Funktion: INSERT
INSERT 0 1
test=*# 
test=*# update t_warnmeldung set val = 'neu' where id = 1;
HINWEIS:  Funktion: UPDATE
UPDATE 1
test=*# delete from t_warnmeldung where id = 1;
HINWEIS:  Funktion: DELETE
DELETE 1
test=*#

Falls Du Recht hast: woher kommt der HINWEIS?
 
Werbung:
Guten Abend,
sodele, Problem gelöst.
Der Punkt war folgender: Mein in PHP geschriebenes Unwetter-Warnsystem ist soweit schon fertiggestellt. Ich wollte jetzt lediglich die Benachrichtigung per Telegram-Messenger einbauen, wofür ich Trigger benötige. In PHP bekomme ich aber die Rückmeldungen der Queries nicht - außer bei SELECT. Das hat dazu geführt, dass ich annahm, der Trigger würde nicht aufgerufen werden. Tja, shit happens.

Schönen Abend noch.
 
Zurück
Oben