Boa tarde pessoal.
Estou utilizando o Mysql 5.5.8(No console diz == Server version: 5.1.31-community MySQL Community Server (GPL)), com WampServer e tenho que fazer uma
trigger que armazene em uma variável local o retorno dos selects que são executados dentro dela.
O problema é que não sei qual a sintáx correta para fazer isto.
Se alguém puder me ajudar eu agradeço.
Segue abaixo a trigger: Uma observação, eu estei o select direto no banco e está funcionando.
DELIMITER $$
CREATE TRIGGER tg_update_produtos AFTER INSERT ON itensVendidos FOR EACH ROW
BEGIN
-- Delcarando as variáveis.
DECLARE codProd INT;
DECLARE codVenda INT;
DECLARE novaQtd INT;
DECLARE antigaQtd INT;
DECLARE tipoProd VARCHAR(50);
/*
Variáveis que guardam:
1° - O código do produto vendido;
2° - O código da venda;
3° - A quantidade de produtos de uma venda;
4° - A quantidade deste produto em estoque na tabela de produtos
que é de um determinado tipo, contém determinado nome e que ainda não foi vendido.
*/
SET codProd = NEW.codProduto,
codVenda = NEW.codVenda,
tipoProd = NEW.tipo;
SET SELECT COUNT(*) INTO novaQtd FROM itensVendidos iv WHERE iv.tipo = tipoProd AND iv.codVenda = codVenda,
SELECT COUNT(*) INTO antigaQtd FROM produtos p WHERE p.nome = (SELECT pd.nome FROM produtos pd WHERE pd.codigo = codProd) AS nmProd AND p.vendido = false;
if(novaQtd < antigaQtd) THEN
UPDATE produtos SET vendido = true WHERE codigo = codProd;
END IF;
END $$
DELIMITER;
Segue o erro que é apresentado quando vou fazer o importe do arquivo que contém a trigger no banco.
#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 'SELECT COUNT(*) INTO novaQtd
FROM itensVendidos iv WHERE iv.tipo = tipoProd AN' at line 22
Desde já, o meu muito obrigado pela ajuda.