Sou novato aqui no fórum. Estou tentando fazer a trigger abaixo, mas está dando erro no primeiro SET, como posso corrigir?
CREATE DEFINER = CURRENT_USER TRIGGER `F001_ESTOQUE_ALTERAR` AFTER INSERT ON `F001_ESTOQUE`
FOR EACH ROW
BEGIN
SET NEW.SALDOANTERIOR =(CASE WHEN NEW.ID =(SELECT MIN(X.ID) FROM F001_ESTOQUE X WHERE X.IDPRODUTO = NEW.IDPRODUTO LIMIT 1) THEN
IFNULL(NEW.SALDOANTERIOR,0) ELSE
IFNULL((((SELECT IFNULL(X.SALDOANTERIOR,0)
FROM F001_ESTOQUE X
WHERE X.IDPRODUTO = NEW.IDPRODUTO AND X.ID < NEW.ID
)+ IFNULL(NEW.ENTRADA,0))- IFNULL(NEW.SAIDA,0)),0));
SET NEW.SALDOATUAL =((CASE WHEN NEW.SALDOANTERIOR IS NULL THEN 0 ELSE NEW.SALDOANTERIOR END)+(CASE WHEN NEW.ENTRADA IS NULL THEN 0 ELSE NEW.ENTRADCASE WHEN A.ID =(SELECT MIN(X.ID) FROM F001_ESTOQUE X WHERE X.IDPRODUTO = A.IDPRODUTO LIMIT 1) THEN
IFNULL(A.SALDOANTERIOR,0) ELSE
IFNULL((((SELECT IFNULL(X.SALDOANTERIOR,0)
FROM F001_ESTOQUE X
WHERE X.IDPRODUTO = A.IDPRODUTO AND X.ID < A.ID
)+ IFNULL(A.ENTRADA,0))- IFNULL(A.SAIDA,0)),0))A END))-(CASE WHEN NEW.SAIDA IS NULL THEN 0 ELSE NEW.SAIDA END);
SET NEW.VALORSALDOATUAL =((CASE WHEN NEW.VALORANTERIOR IS NULL THEN 0 ELSE NEW.VALORANTERIOR END)+(CASE WHEN NEW.VALORENTRADA IS NULL THEN 0 ELSE NEW.VALORENTRADA END))-(CASE WHEN NEW.VALORSAIDA IS NULL THEN 0 ELSE NEW.VALORSAIDA END);
IF(NEW.IDPRODUTO =0) THEN SET NEW.IDPRODUTO = NULL;END IF;
IF(NEW.IDDETALHEPEDIDO =0) THEN SET NEW.IDDETALHEPEDIDO = NULL;END IF;
IF(NEW.IDUSUARIOALTERA =0) THEN SET NEW.IDUSUARIOALTERA = NULL;END IF;
UPDATE E005_PRODUTOS SET E005_PRODUTOS.QUANTESTOQUE = NEW.SALDOATUAL
WHERE E005_PRODUTOS.ID = NEW.ID;END;
Pergunta
ilano
Olá pessoal,
Sou novato aqui no fórum. Estou tentando fazer a trigger abaixo, mas está dando erro no primeiro SET, como posso corrigir?
Grato,
Ilano
Editado por ilanoLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.