Oracle 10g: via Trigger elegant mehrere Insert auslösen

dexit2k

Grünschnabel
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
-> geht auch ned

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?
 
Zurück