Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!!!
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;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:)
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_trAFTER INSERT ONirom0000FOR EACH ROWBEGIN IF NEW.STATUS_IROM0000 = 'CONFIRMADO' THEN INSERT INTOiest0000(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;=)