sk8sta 0 Denunciar post Postado Março 16, 2009 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
Wagner Bianchi 0 Denunciar post Postado Março 16, 2009 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
sk8sta 0 Denunciar post Postado Março 16, 2009 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
Wagner Bianchi 0 Denunciar post Postado Março 16, 2009 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
sk8sta 0 Denunciar post Postado Março 16, 2009 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
sk8sta 0 Denunciar post Postado Março 16, 2009 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
Wagner Bianchi 0 Denunciar post Postado Março 16, 2009 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 Compartilhar este post Link para o post Compartilhar em outros sites