Hallo,
Bezüglich des “Features” : table_log-0.4.4.tar.gz
hätte ich eine Frage:
Nachdem ich das obige Programm (von ADS glaube ich) bei mir erfolgreich eingebaut habe, kommt nun die Einschränkung, dass nur unter gewissen Umständen eine Zeile protokolliert werden soll…
Wird dies über den Trigger gelöst?
Wenn ich das soweit verstanden habe, bewirkt ein Trigger, dass auf eine gewisses Ereigniss hin, etwas getan wird…
table_log beispielsweise erzeugt folgende trigger:
CREATE TRIGGER "table_log_trigger" AFTER INSERT OR UPDATE OR DELETE
ON "public"."t_kvpos" FOR EACH ROW
EXECUTE PROCEDURE "public"."table_log"(t_kvpos_log, 1, public);
Dies hört sich nach folgendem an:
Immer wenn auf t_kvpos ein update/insert oder delete gemacht wird, wird eine externe Funktion table_log aufgerufen???
Die Funktion table_log gibts auch bei mir in der Datenbank…
CREATE OR REPLACE FUNCTION "public"."table_log" () RETURNS trigger AS
'$libdir/table_log', 'table_log'
LANGUAGE 'c' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
Das obige bedeutet wohl, es wird eine Funktion/Programm auf meinem Server aufgerufen und diese gibt wieder einen Trigger zurück???
Naja… Mein Ziel soll sein, dass dieses tablelogging nur dann durchgeführt werden soll, wenn sich in gewissen Spalten der Wert ändert…
Wo ist dies zu tun?
Im trigger oder in der Funktion?
Ich denke mal im trigger aber wo schreibe ich dann die Einschränkung hin?
Irgendwo muss doch was hin in der Form
If (old.nekp != new.nekp) OR
(old.nvkp != new.nVKP) OR...
EXECUTE PROCEDURE "public"."table_log"(t_kvpos_log, 1, public);
Else
...
Könnte es aber auch sein, dass ich eine neue Funktion erschaffen muss, die von dem trigger immer aufgerufen wird, ich aber in der Funktion dann die obige Entscheidung treffe???