Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fitinge

Como fazer IF na TRIGGER - PL/SQL do MySQL 5

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.