dimiguel 0 Denunciar post Postado Janeiro 18, 2013 Estou tentando criar uma trigger para auditar uma tabela, da seguinte maneira: CREATE TRIGGER log_farmacias AFTER UPDATE ON farmacias FOR EACH ROW BEGIN INSERT INTO farmacia_logs SET farmacia_id = OLD.id, id_string = OLD.id_string, estado_id = OLD.estado_id, cidade_id = OLD.cidade_id, nome = OLD.nome, endereco = OLD.endereco, numero = OLD.numero, complemento = OLD.complemento, bairro = OLD.bairro, email = OLD.email, site = OLD.site, nao_fecha = OLD.nao_fecha, created = NOW(); END; Ao executar, é retornado a mensagem de erro que existe um problema na linha 17 (created = NOW() ;) mas não tenho noção do que possa ser. Alguém pode me dar uma luz? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 18, 2013 veja a síntaxe do insert. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Janeiro 18, 2013 Além do que o Motta já disse. Faça assim: DELIMITER // CREATE TRIGGER log_farmacias AFTER UPDATE ON farmacias FOR EACH ROW BEGIN ... END; // DELIMITER ; Compartilhar este post Link para o post Compartilhar em outros sites
dimiguel 0 Denunciar post Postado Janeiro 18, 2013 Perfeito, @Prog! Mais uma vez você me salvando..rs. Agora, aproveitando o gancho, pra verificar os dados que foram alterados, tenho que fazer um IF pra cada campo ou existe uma formulá "mágica" pra isso? Obrigado, mais uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Janeiro 18, 2013 Verificar os dados que foram alterados? Pq quer fazer isso numa Trigger? Desculpe, mas acho que precisamos entender melhor o problema. Compartilhar este post Link para o post Compartilhar em outros sites
dimiguel 0 Denunciar post Postado Janeiro 18, 2013 Verificar os dados que foram alterados? Pq quer fazer isso numa Trigger? Desculpe, mas acho que precisamos entender melhor o problema. É que, neste caso, estou gravando todos os dados da tabela "farmácias", independente dele ter sido alterado ou não. O que eu gostaria é gravar somente os dados que foram realmente alterados (ou é viagem minha?). Ou seja, se o endereço da farmácia foi alterado, grava somente o novo valor para o campo "endereco" e os demais fica como "null". Ficou claro? Compartilhar este post Link para o post Compartilhar em outros sites
Prog 183 Denunciar post Postado Janeiro 18, 2013 Sim, pode tentar algo assim: IF(OLD.nome != NEW.nome, OLD.nome, NULL) Compartilhar este post Link para o post Compartilhar em outros sites
dimiguel 0 Denunciar post Postado Janeiro 18, 2013 Perfeito. Funcionou como desejado. Valeu, mais uma vez! Compartilhar este post Link para o post Compartilhar em outros sites