sql >> Base de Datos >  >> RDS >> Oracle

Desencadenador que inserta una fila en la tabla de registro al insertar o eliminar en una tabla de personas compilada con errores

Como no publicaste el error, tengo que adivinar. Supongo que el problema es que name no es un identificador válido en este contexto. Debe hacer referencia a :new.name o :old.name . :old.name será NULL en una inserción while :new.name será NULL en una eliminación, así que asumo que quieres algo como

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;