Oracle Trigger - Changelog IF NOT EXISTS

warface

Mitglied
Hallo Zusammen,

ich brauch mal wieder einen Tipp.
Ich arbeite mit einem System, bei diesem können Dokumente bei Artikeln hinterlegt werden können.
Das Problem, das System macht immer ein "delete from" und anschließend einen "insert into" mit der aktualisierten Liste.
Dadurch würde die gewünschte Changelog-Tabelle unübersichtlich werden.
Ich hab es bereits mit IF NOT EXISTS und dem folgenden Befehl versucht leider klappt das irgendwie nicht so richtig.

SQL:
create or replace TRIGGER DEMODB.customer_doks_LOGGER
BEFORE INSERT --OR DELETE --OR UPDATE
ON DEMODB.doks
FOR EACH ROW
DECLARE
    PFAD doks.pfad%TYPE;  
BEGIN
SELECT PFAD INTO PFAD FROM DEMODB.doks WHERE key_values = :new.key_values and Pfad = :new.pfad;
------------------------
-------- INSERT --------
------------------------
    IF INSERTING and pfad <> :new.pfad THEN
        INSERT INTO DEMODB.customer_doks_log (
            "Changenr",
            "ChangeType",
            "ChangeTime",
            "ChangedBy",
            dokgrp_new,
            doktyp_new,
            key_values_new,
            nr_new,
            parameter_new,
            pfad_new,
            dokgrp_old,
            doktyp_old,
            key_values_old,
            nr_old,
            parameter_old,
            pfad_old)
        VALUES (
            (select max("Changenr")+1 from DEMODB.customer_doks_log),
            'insert',
            systimestamp,
            '',
            :new.dokgrp,
            :new.doktyp,
            :new.key_values,
            :new.nr,
            :new.parameter,
            :new.pfad,
            '',
            '',
            '',
            '',
            '',
            '');
    END IF;
END;
 

Neue Beiträge

Zurück