Code:
create or replace
TRIGGER AFTER_ACTION_X_TO_ASD
AFTER UPDATE OR INSERT ON X
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
Datensatz X%ROWTYPE;
cursor CURSOR2 is SELECT * FROM A WHERE artikel_nr = :NEW.artikel_nr;
cursor CURSOR3 is SELECT * FROM S WHERE artikel_nr = :NEW.artikel_nr;
cursor CURSOR4 is SELECT * FROM D WHERE artikel_nr = :NEW.artikel_nr;
BEGIN
----->Hier fehlt was<-------
-- Verarbeitung Werk2
OPEN CURSOR2;
FETCH CURSOR2 INTO Datensatz;
IF CURSOR2%NOTFOUND THEN
INSERT INTO A VALUES Datensatz;
END IF;
CLOSE CURSOR2;
-- Verarbeitung Werk3
OPEN CURSOR3;
FETCH CURSOR3 INTO Datensatz;
IF CURSOR3%NOTFOUND THEN
INSERT INTO S VALUES Datensatz;
END IF;
CLOSE CURSOR3;
-- Verarbeitung Werk4
OPEN CURSOR4;
FETCH CURSOR4 INTO Datensatz;
IF CURSOR4%NOTFOUND THEN
INSERT INTO D VALUES Datensatz;
end if;
CLOSE CURSOR4;
END;
Es geht um den Eintrag "----->Hier fehlt was<-------" bzw. das Insert.
Was ich schon versucht habe:
INSERT INTO A VALUES :new;
-> geht aber ned. Wäre mir aber am liebsten, evtl ist nur die syntax von mir falsch.
Alternativ wäre auch gut:
Code:
foreach ColumnX in select column_name from all_tab_columns where table_name = 'X';
Datensatz.ColumnX := :new.ColumnX
loop
Was funktioniert ist:
Datensatz.A := :new.A
Datensatz.B := :new.B
usw.
Aber es sind über 100 Spalten in der Tabelle und des ist *******!
Wie löse ich des elegant?