Oracle
 sql >> Base de données >  >> RDS >> Oracle

Déclencheur qui insère une ligne dans la table de journal lors de l'insertion ou de la suppression dans une table de personnes compilée avec des erreurs

Puisque vous n'avez pas posté l'erreur, je dois deviner. Je suppose que le problème est que name n'est pas un identifiant valide dans ce contexte. Vous devez référencer soit :new.name ou :old.name . :old.name sera NULL sur un insert while :new.name sera NULL sur une suppression donc je suppose que vous voulez quelque chose comme

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;