Olá pessoal,
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;
Grato,
Ilano