Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Trigger, der beim Einfügen oder Löschen einer fehlerhaft kompilierten Personentabelle eine Zeile in die Protokolltabelle einfügt

Da du den Fehler nicht gepostet hast, muss ich raten. Ich vermute, dass das Problem dieser name ist ist in diesem Zusammenhang kein gültiger Bezeichner. Sie müssen entweder auf :new.name verweisen oder :old.name . :old.name wird NULL sein bei einer Einfügung während :new.name wird NULL sein bei einem Löschvorgang, also nehme ich an, Sie wollen so etwas wie

CREATE OR REPLACE TRIGGER add_del
  BEFORE INSERT OR DELETE ON persons
  FOR EACH ROW
BEGIN
  IF INSERTING THEN
    INSERT INTO logs (who, what) VALUES (:new.name, 'Insert into persons');
  ELSE
    INSERT INTO logs (who, what) VALUES (:old.name, 'Delete from persons');
  END IF;
END;