No livro "MySQL Administrator's Bible", os autores discutem restrições sobre como combinar eventos, tempos de disparo e as palavras-chave OLD e NEW:
-BEFORE INSERT: NEW é suportado BEFORE INSERT. BEFORE não suporta OLD.
-AFTER INSERT: AFTER não suporta NEW. não faz sentido usar OLD com AFTER INSERT.
-BEFORE UPDATE: NEW é suportado com BEFORE UPDATE. BEFORE não suporta OLD.
-AFTER UPDATE: AFTER não suporta NEW. AFTER UPDATE suporta OLD.
-BEFORE DELETE: Não faz sentido usar NEW com BEFORE DELETE. BEFORE não suporta OLD.
-AFTER DELETE: AFTER não suporta NEW. OLD é suportado com AFTER DELETE.
Assim, de cordo com o livro, eu não posso usar NEW quando estou usando AFTER. No entanto, Eu estou fazendo exatamente isso no trigger abaixo.
Eu uso ele para armazenar os empregados inseridos em uma tabela backup employee_history
CREATE TRIGGER insert_emplyee_history AFTER INSERT ON EMPLOYEE FOR EACH ROW INSERT INTO EMPLOYEE_HISTORY VALUES (NEW.NOME,NEW.SSN,NEW.SALARIO,NEW.DNO);
Este trigger funciona como esperado no MySQL 5.7.
Será que o livro está errado? Talvez essas restrições tenham mudado nas últimas versões (eu uso a 5.7 e o livro usa a 5.0).
alguém poderia me dizer exatamente quais são as restrições envolvidas nesse caso?