Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha o valor OLD no MySQL Trigger APÓS a instrução de atualização


Em um UPDATE TRIGGER , você pode usar o OLD palavra-chave para acessar os dados da linha que estão sendo substituídos pela atualização. O NEW A palavra-chave permite acessar os dados da linha de entrada que substituirão a linha antiga, se bem-sucedida.

Um exemplo de um UPDATE gatilho é:
CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLFiddle aqui

Dependendo do tipo de gatilho criado, o OLD e NEW linhas podem não estar disponíveis para você:

INSERIR GATILHO
  • Acesso ao NEW apenas pseudo linhas.

ATUALIZAR GATILHO
  • Acesso ao NEW e OLD pseudo linhas

EXCLUIR GATILHO
  • Acesso apenas ao OLD pseudo linhas

ou seja, não há OLD linha em um INSERT gatilho e nenhum NEW linha em um DELETE acionar.

Pergunta do OP

O OP não forneceu o código real e a mensagem de erro mencionada nos comentários:

indica que o OP criou inadvertidamente um INSERT TRIGGER e não um UPDATE TRIGGER como foi indicado na pergunta. Um INSERT o gatilho não tem OLD pseudotabela.