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
eOLD
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.