Result consisted of more than one row //Ajuda com Trigger MYSQL

1 resposta
J

Boa tarde pessoal gostaria de uma dica com meu probleminha aqui…

Tenho um trigger em mysql onde tenho uma entidade fraca entre duas tabelas, onde são elas ordemdeproducao, produto e ordemdeproducaoitem…
onde quero inserir muitos produtos em muitas ordens, resumindo

CREATE TRIGGER t_adicionaestoqueproduzidos
AFTER UPDATE ON ordemdeproducaoitem
FOR EACH ROW

BEGIN
    DECLARE var BOOLEAN;
    DECLARE idordem INT;
    DECLARE idproduto INT;
    
    SELECT NEW.ordemdeproducaoitem_id FROM ordemdeproducaoitem INTO idordem;
    SELECT NEW.produto_produto_id FROM ordemdeproducaoitem WHERE ordemdeproducaoitem_id INTO idproduto;
    SELECT ordemdeproducao_statusitempronto FROM ordemdeproducaoitem WHERE ordemdeproducaoitem_id = idordem INTO var;
    
    
    IF(var)THEN
        UPDATE produto SET produto_quantidade= NEW.ordemdeproducao_quantidade + produto_quantidade WHERE produto_id = idproduto;
    END IF;
END;$$

CREATE TRIGGER t_adicionaestoqueproduzidos AFTER UPDATE ON ordemdeproducaoitem FOR EACH ROW BEGIN DECLARE var BOOLEAN; DECLARE idordem INT; DECLARE idproduto INT; SELECT NEW.ordemdeproducaoitem_id FROM ordemdeproducaoitem INTO idordem; SELECT NEW.produto_produto_id FROM ordemdeproducaoitem WHERE ordemdeproducaoitem_id INTO idproduto; SELECT ordemdeproducao_statusitempronto FROM ordemdeproducaoitem WHERE ordemdeproducaoitem_id = idordem INTO var; IF(var)THEN UPDATE produto SET produto_quantidade= NEW.ordemdeproducao_quantidade + produto_quantidade WHERE produto_id = idproduto; END IF; END;$$

Minha idéia é a seguinte uma ordemdeservico diz quantos e quais produtos serão produzidos, e por si ordemdeservicoitem possuirá seu codigo único. Então a ordem de serviço será aberta e quando for alterada ( fechada ) a quantidade de produtos da ordem será somada ao estoque.
Imagino que esses meus selects não estão corretos, imagino que tenho sido claro, mas jóia

Obrigado.[b]

1 Resposta

J

Essa foi a dúvida mais idiota da semana… resolvi da seguinte forma, como eu já tinha o valor da variável na clausula NEW.nomedacoluna apenas deu um SET var = NEW.nomedacoluna;

BEGIN
    DECLARE var BOOLEAN;
    DECLARE idordem INT;
    DECLARE idproduto INT;
    
    SET idordem  = NEW.ordemdeproducaoitem_id;
    SET idproduto = NEW.produto_produto_id;
    
    SELECT ordemdeproducao_statusitempronto FROM ordemdeproducaoitem WHERE ordemdeproducaoitem_id = idordem INTO var;
    
    IF(var)THEN
        UPDATE produto SET produto_quantidade= NEW.ordemdeproducao_quantidade + produto_quantidade WHERE produto_id = idproduto;
    END IF;
END;$$
Criado 28 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 1
Participantes 1