mxd 0 Denunciar post Postado Novembro 20, 2008 Boa noite a todos, Estou com um problema quanto à validação de uma inserção em minha base de dados utilizando Trigger. Segue o bloco de código: CREATE TRIGGER valida_compra BEFORE INSERT ON compra FOR EACH ROW BEGIN IF ( (NEW.qte <= 0) or (NEW.valorunitario <=0) ) THEN SET NEW.cod_compra = NULL; END IF; END; O erro que aparece é o seguinte: #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 'SET NEW.cod_compra = NULL' at line 5 Alguem têm alguma idéia ou sabe qual é o problema deste bloco de código? Estive fazendo uma pesquisa neste mesmo fórum e estou utilizando praticamente o que "Wagner Bianchi" indicou. ps: Antes que me perguntem, estou utilizando o MySQL na versão 5.0. Obrigado. Abs., Renato Guimarães http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Dezembro 4, 2008 O seu utilitario de banco fornece alguma ajuda a escrita de triggers? usa o codigo assim DELIMITER $$ CREATE TRIGGER valida_compra BEFORE INSERT ON compra FOR EACH ROW BEGIN IF ( (NEW.qte <= 0) or (NEW.valorunitario <=0) ) THEN SET NEW.cod_compra = NULL; END IF; END$$ DELIMITER; se não der, coloque o nome do banco que está utilizando antes do nome da trigger e antes do nome da tabela DELIMITER $$ CREATE TRIGGER nomedobancodedados.valida_compra BEFORE INSERT ON nomedobancodedados.compra FOR EACH ROW BEGIN IF ( (NEW.qte <= 0) or (NEW.valorunitario <=0) ) THEN SET NEW.cod_compra = NULL; END IF; END$$ DELIMITER; porém, mesmo se der certo sua trigger, sua validaçãoo não irá funcionar se o campo cod_compra for um campo auto increment, como sua trigger roda BEFORE INSERT, ou seja, antes de inserir... ela atribuirá null para o cod_compra e o auto increment vai atribuir um valor para ele do mesmo jeito.... abraço Compartilhar este post Link para o post Compartilhar em outros sites