fitinge 0 Denunciar post Postado Junho 7, 2006 Pessoal, estou começando agora com mysql5 e estou com dificuldades de usar um IF numa trigger! Bom, a trigger que fiz está funcionando, mas não tem o IF, aqui está ela: CREATE TRIGGER `irom0000_after_ins_tr` AFTER INSERT ON `irom0000` FOR EACH ROWBEGIN INSERT INTO `iest0000` (`COD_IEST0000`, `COD_IROM0000`, `COD_PED_IPED0000`, `DATA_IEST0000`, `QTD_KG_IEST0000`, `TIPO_IEST0000`) VALUES (NULL, NEW.COD_IROM0000, NULL, NOW(), NEW.PESO_BRUTO_IROM0000, 'ENTRADA');END; Bem simples, agora quero fazer um IF para quando for um determinado status inseridor na tabela IROM0000 (onde está a trigger), ele não faça o INSERT na tabela IEST0000. Em oracle por exemplo eu sei como fazer, mas não está funcionando no mysql, a syntax do pl/sql do mysql é um pouco diferente, mas no oracle ficaria algo assim: CREATE TRIGGER `irom0000_after_ins_tr` AFTER INSERT ON `irom0000` FOR EACH ROWBEGIN IF(NEW.STATUS_IROM0000 = 'CONCLUIDO') BEGIN INSERT INTO `iest0000` (`COD_IEST0000`, `COD_IROM0000`, `COD_PED_IPED0000`, `DATA_IEST0000`, `QTD_KG_IEST0000`, `TIPO_IEST0000`) VALUES (NULL, NEW.COD_IROM0000, NULL, NOW(), NEW.PESO_BRUTO_IROM0000, 'ENTRADA'); END;END; Alguem pode me ajudar??? valeu!!! Compartilhar este post Link para o post Compartilhar em outros sites
fitinge 0 Denunciar post Postado Junho 8, 2006 Rapaziada! Consegui resolver a bucha! Se alguem tiver o mesmo problema, a syntax do pl/sql do mysql é um pouco diferente, pelo menos do oracle... olha como ficou para funcionar!!! CREATE TRIGGER `irom0000_after_ins_tr` AFTER INSERT ON `irom0000` FOR EACH ROWBEGIN IF NEW.STATUS_IROM0000 = 'CONFIRMADO' THEN INSERT INTO `iest0000` (`COD_IEST0000`, `COD_IROM0000`, `COD_PED_IPED0000`, `DATA_IEST0000`, `QTD_KG_IEST0000`, `TIPO_IEST0000`) VALUES (NULL, NEW.COD_IROM0000, NULL, NOW(), NEW.PESO_BRUTO_IROM0000, 'ENTRADA'); END IF;END; =) Compartilhar este post Link para o post Compartilhar em outros sites
M3nTaL 0 Denunciar post Postado Maio 8, 2008 Boas, Eu tenho tb um pequeno problema de sintaxe usando TRIGGERS com mySQL.. Veja se me pode dar uma ajudinha :). Aqui vai o codigo: CREATE TRIGGER modificou AFTER UPDATE ON monitor FOR EACH ROW BEGIN IF NOT EXISTS(SELECT estado_tmp FROM alteracoes WHERE id_tmp = OLD.id) THEN INSERT INTO alteracoes VALUES(OLD.id,NEW.estado); ELSE UPDATE alteracoes SET estado_tmp = NEW.estado WHERE id_tmp = OLD.id; END IF END; A ideia é ter uma tabela MONITOR(id,estado) e quero que dispare um TRIGGER sempre que existir uma alteração no campo estado(ON UPDATE), o conteudo desse campo pode ser "LIGADO" ou "DESLIGADO". Sempre que existir essa alteração os novos valores serão colocados numa outra tabela, ALTERACOES(id_tmp,estado_tmp). Brigadao:) Compartilhar este post Link para o post Compartilhar em outros sites