Ir ao conteúdo

Posts recomendados

Postado

Olá, estou com duvida para realizar a solução deste problema: 
Antes de vender um item, verificar se o mesmo está disponível no estoque e só então permitir a saída da venda deste produto.
 

Estou utilizando o mysql workbench.

Segue  o que eu já fiz até então:
 

CREATE DATABASE aulaTriggers;
use aulaTriggers;
	
CREATE TABLE Produtos
(
    Referencia  VARCHAR(3) PRIMARY KEY,
    Descricao   VARCHAR(50) UNIQUE,
    Estoque INT NOT NULL DEFAULT 0
);
 
INSERT INTO Produtos VALUES ('001', 'Feijão', 10);
INSERT INTO Produtos VALUES ('002', 'Arroz', 5);
INSERT INTO Produtos VALUES ('003', 'Farinha', 15);
 
CREATE TABLE ItensVenda
(   
    Venda       INT,
    Produto VARCHAR(3),
    Quantidade  INT
);

SELECT * FROM Produtos;

DELIMITER $
 
CREATE TRIGGER Tgr_ItensVenda_Insert AFTER INSERT
ON ItensVenda
FOR EACH ROW
BEGIN
    UPDATE Produtos SET Estoque = Estoque - NEW.Quantidade 
WHERE Referencia = NEW.Produto;
END$
 
CREATE TRIGGER Tgr_ItensVenda_Delete AFTER DELETE
ON ItensVenda
FOR EACH ROW
BEGIN
    UPDATE Produtos SET Estoque = Estoque + OLD.Quantidade
WHERE Referencia = OLD.Produto;
SHOW triggers;
END$
 
DELIMITER ;

INSERT INTO ItensVenda VALUES (1, '001',50); //Não deveria efetuar a venda neste caso pois o estoque ficaria negativo
INSERT INTO ItensVenda VALUES (1, '002',1);
INSERT INTO ItensVenda VALUES (1, '003',5);

SELECT * FROM ItensVenda;
SELECT * FROM Produtos;

 

Postado

Você quer usar uma trigger ou precisa usar? Porque ao que que me lembro, e já não uso isto a muito tempo, uma trigger (o que o nome já sugere) é executada após uma ocorrência, ou seja, você terá de verificar se existe o produto ANTES da venda, e com uma trigger só poderá executar alguma ação depois da venda feita...

Postado

Boa noite @Denis Bopp, o problema em questão pede a solução com a utilização de Trigger, tem que usar a ferramenta :/, sou iniciante em sql e não consegui uma forma de rodar um "if" dentro do trigger para fazer a comparação antes que ocorra a venda, acredito que o if resolveria o problema.

Postado

Bom, como disse faz tempo que não uso estes recursos, mas o que pode fazer é uma trigger no insert, e verificar se existe o produto no estoque, se não houver exclui o registro de venda.

  • Curtir 1
  • 2 semanas depois...
Postado

A trigger pode ser before insert - nesse caso, ao se executar um insert em uma tabela com essa trigger, antes do dado ser efetivamente inserido vai ser executada a trigger. Como exercício vale a pena aprender, mas na prática esse tipo de validação deveria ficar a cargo da aplicação, e não colocar toda a regra de negócio dentro do banco.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!