Ir para conteúdo

POWERED BY:

Arquivado

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

sk8sta

[Resolvido] Criar uma trigger

Recommended Posts

Pessoal estou tentando criar uma trigger:

 

DELIMITER |
	CREATE TRIGGER leads_cstm_update_rel AFTER UPDATE ON res_reseller_leads
	FOR EACH ROW BEGIN
		IF NEW.deleted = '1' THEN
			update leads_cstm set login_reseller_c = '' where id_c = 'NEW.id'
		END IF;
	END;
|DELIMITER;

só que da erro:

 

Error

 

SQL query:

 

CREATE TRIGGER leads_cstm_update_rel AFTER UPDATE ON res_reseller_leads FOR EACH ROW BEGIN IF NEW.deleted = '1' THEN UPDATE leads_cstm SET login_reseller_c = '' WHERE id_c = 'NEW.id' END IF ;

 

END ;

 

| DELIMITER;

 

MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END IF;

END;

|DELIMITER' at line 5

 

se alguem ai souber uma solução!?.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Amigão,

 

Os comandos no MySQL são finalizados com ";" - ponto-e-vírgula.

Perceba que ao fim do comando UPDATE não há este sinal, portanto, aí está o erro.

 

Tente assim:

 

DELIMITER |
	CREATE TRIGGER leads_cstm_update_rel AFTER UPDATE ON res_reseller_leads
	FOR EACH ROW BEGIN
		IF NEW.deleted = '1' THEN
			update leads_cstm set login_reseller_c = '' where id_c = NEW.id;
		END IF;
	END;
|

Os operadores NEW e OLD não precisam estar entre aspas, ok?

 

Qualquer problemas, continue o post.

 

Happy MySQL' ing http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pensei que deveria ficar dentro de apostrofes pois se trata de uma string, mas mesmo assim executei essa trigger:

 

DELIMITER |
	CREATE TRIGGER leads_cstm_update_rel AFTER UPDATE ON res_reseller_leads
	FOR EACH ROW BEGIN
		IF NEW.deleted = '1' THEN
			update leads_cstm set login_reseller_c = '' where id_c = NEW.id;
		END IF;
	END;
|

me apareceu um erro:

 

Error

 

SQL query:

 

CREATE TRIGGER leads_cstm_update_rel AFTER UPDATE ON res_reseller_leads FOR EACH ROW BEGIN IF NEW.deleted = '1' THEN UPDATE leads_cstm SET login_reseller_c = '' WHERE id_c = NEW.id;

 

END IF ;

 

END ;

 

|

 

MySQL said: Documentation

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '|' at line 7

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, o problema desta vez com o delimitador, mas para não delongarmos muito nesse assunto e resolvermos, segue um modelo para você seguir:

 

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type	| Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id	| int(11) | YES  |	 | NULL	|	   | 
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> delimiter //
mysql> create trigger trg_qualquer after update on t1
	-> for each row
	-> begin
	->   if (NEW.id != 0) then
	->	  update t1 set id =NEW.id;
	->   end if;
	-> end;
	-> //
Query OK, 0 rows affected (0.01 sec)

Os operadores NEW e OLD são reconhecidos pelo parser do MySQL como palavras reservadas, apesar de serem strings, mas, mesmo o sendo, não devem ser delimitados.

 

Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou seja, esse delimitador que eu estava usando: "|" é reconhecido como uma palavra reservada do mysql???????

Será que eu não poderia criar uma trigger sem esse delimiter, pois nem com esse exemplo eu consegui usando "//"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano depois de varias tentativas incansaveis, haihaihaiah, eu consegui se liga como fiz:

 

DELIMITER |
	CREATE TRIGGER accounts_cstm_update_rel AFTER UPDATE ON res_reseller_accounts
	FOR EACH ROW BEGIN
		IF NEW.deleted = '1' THEN
			update accounts_cstm set reseller_login_c = '' where id_c = NEW.id
		END IF;
	END;

valeu ai pela ajuda....

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.