Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Gatilho que insere linha na tabela de log ao inserir ou excluir em uma tabela de pessoas compilada com erros


Como você não postou o erro, tenho que adivinhar. Meu palpite é que o problema é que name não é um identificador válido neste contexto. Você precisa fazer referência a :new.name ou :old.name . :old.name será NULL em uma inserção enquanto :new.name será NULL em uma exclusão, então estou assumindo que você quer 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;