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 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;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!?.
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;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
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;
-> //Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
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 "//"
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;Dê uma lida nesse artigo: http://imasters.com.br/artigo/8123/mys...sql_-_triggers/
Que bom que conseguiu.
Happy MySQL'ing!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
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 |
|
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