sk8sta 0 Denunciar post Postado Novembro 19, 2009 Bom dia pessoal. Criei uma trigger que quando a tabela X tem o campo status alterado, a trigger altera um outro campo da proria tabela X: CREATE TRIGGER set_paid AFTER UPDATE ON tabela_X FOR EACH ROW BEGIN IF NEW.status = 'C' THEN UPDATE tabela_X set paid = '1' where id=NEW.id limit 1; IF NEW.status <> 'C' THEN UPDATE tabela_X set paid = '0' where id=NEW.id limit 1; END; Porem quando executo um update na tabela mudando o campo status o mysql me retorna isso: Mensagens do MySQL : Documentação #1442 - Can't update table 'tabela_X' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Novembro 19, 2009 você poderia resumir este código CREATE TRIGGER set_paid AFTER UPDATE ON tabela_X FOR EACH ROW BEGIN IF NEW.status = 'C' THEN UPDATE tabela_X set paid = '1' where id = NEW.id limit 1; ELSE UPDATE tabela_X set paid = '0' where id = NEW.id limit 1; END; Os muitos erros de SQL podem ser corrigidos por apenas entender o erro que se é apresentado. Você consegue traduzir isto: ?? Can't update table 'tabela_X' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. Não é possível atualizar a tabela 'tabela_X' em função armazenada pois já está declarada... ou armazenada. Isto é Você já criou. Toda vez que você for fazer outra alteração, você não usa mais o CREATE, e sim o ALTER. Tente isso: ALTER TRIGGER set_paid AFTER UPDATE ON tabela_X FOR EACH ROW BEGIN IF NEW.status = 'C' THEN UPDATE tabela_X set paid = '1' where id = NEW.id limit 1; ELSE UPDATE tabela_X set paid = '0' where id = NEW.id limit 1; END; Se der erro posta ae. Compartilhar este post Link para o post Compartilhar em outros sites
sk8sta 0 Denunciar post Postado Novembro 19, 2009 Desculpe, mas não entendi o que você falou. Eu não tinha nenhuma tregger, porisso usei o CREATE, acredito eu que se você não tem nada e quer criar não posso usar o ALTER, não usei o alter pois não queria alterar a trigger. Em questão a tradução eu entendi porem a mensagem de erro achei meio confusa, pelo que entendi, ja existe alguma coisa com o mesmo nome sei la eu... Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Novembro 23, 2009 Então, quando você executou da primeira vez e deu erro ele conseguiu criar a TRIGGER Agora você ta executando de novo, está dando esse erro pq já está criada. Compartilhar este post Link para o post Compartilhar em outros sites
sk8sta 0 Denunciar post Postado Novembro 24, 2009 Entendi, mas acho que expressei mal, esse erro acontece quando eu altero um registro na tabela, ai acho que ele tenta executar a triger e da esse erro... Compartilhar este post Link para o post Compartilhar em outros sites