Trigger no MySql

Boa Noite, estou fazendo um sistema e toda vez que eu salvar um item do Pedido gostaria de fazer um trigger para atualizar o estoque
porem não estou conseguindo fazer alguem pode me ajudar


DELIMITER $$ 
DROP TRIGGER IF EXISTS BAIXA_ESTOQUE $$ 
CREATE TRIGGER BAIXA_ESTOQUE AFTER INSERT ON  itenspedidotemp
FOR EACH ROW
BEGIN

SET @VARIAVEL = (SELECT QUANTIDADE FROM  ESTOQUE WHERE PRODUTO = NEW. codigoProduto);
@VARIAVEL = (@VARIAVEL - NEW.quantidade);
UPDATE ESTOQUE SET quantidade= @VARIAVEL ;
END$$ 
DELIMITER ;

eu não sei trabalhar com Trigger, tentei mas nao deu certo!

Bom, vamos esclarecer algumas coisas.
Triggers são procedimentos armazenados (stored procedures) que podem ser disparados de acordo com determinado evento (insert, delete, select ou update).
Tirando este fator, trigger é uma stored procedure (não literal, mas conceitualmente).

A partir disso, podemos definir da seguinte forma

  • Uma trigger tem sempre um evento associado (no caso, um INSERT)
  • Uma trigger sempre vai realizar uma ação (no caso, um select e um insert)

Lendo a tua trigger, fiquei com uma dúvidam NEW seria a tabela que está sendo manipulada?

  • Se não, de onde vem os valores codigoProduto e quantidade?

Eu sugiro trocar o set @VARIAVEL por um cursor, fica mais facil manipular.

Além disso, qual o erro?

Deixa eu explicar eu tenho uma tabela itempedidotemporario (essa tabela armazena os itens ate fechar o pedido) porém quando inserir um item nessa tabela eu quero disparar a trigger para atualizar o estoque
e se o usuario deletar o item quero disparar outra trigger para atualizar o estoque
esse New.codigoProduto e NEW.quantidade e o campo da tabela itempedidotemporario.

agora como eu altero set @VARIAVEL por um cursor. tipo sou leigo em BD

quando tento execultar para salvar a trigger aparece esse erro:

#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 ‘@VARIAVEL = (@VARIAVEL - NEW.quantidade);
UPDATE ESTOQUE SET quantidade= @VARIA’ at line 5

[quote=BBS]quando tento execultar para salvar a trigger aparece esse erro:

#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 ‘@VARIAVEL = (@VARIAVEL - NEW.quantidade);
UPDATE ESTOQUE SET quantidade= @VARIA’ at line 5 [/quote]

Isto ocorre pois isto

@VARIAVEL = (@VARIAVEL - NEW.quantidade);
Não existe.
O correto seria

SET @VARIAVEL = @VARIAVEL - NEW.quantidade;