Ir para conteúdo

POWERED BY:

Arquivado

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

mxd

Triggers - Validando uma Inserção

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.