

Seu próximo nível começa aqui
Seu desenvolvimento não pode ter limites. Garanta sua Assinatura Ilimitada e libere uma preparação completa com os melhores professores do Brasil.
Em um banco de dados Oracle, um desenvolvedor está configurando um trigger para garantir que, antes de inserir um novo pedido na tabela Pedidos, o Estoque do produto seja verificado para assegurar que há quantidade suficiente disponível. A tabela Estoque contém as colunas ProdutoID, QuantidadeDisponivel.
Qual das seguintes opções de trigger cumpre esta funcionalidade?
CREATE OR REPLACE TRIGGER VerificaEstoque
BEFORE INSERT ON Pedidos
FOR EACH ROW
BEGIN
SELECT QuantidadeDisponivel INTO
:NEW.QuantidadeDisponivel
FROM Estoque
WHERE ProdutoID = :NEW.ProdutoID;
IF :NEW.QuantidadeDisponivel <= 0 THEN
RAISE_APPLICATION_ERROR(-20001, 'Estoque insuficiente.');
END IF;
END;
CREATE OR REPLACE TRIGGER VerificaEstoque
AFTER INSERT ON Pedidos
FOR EACH ROW
DECLARE
qtdDisponivel NUMBER;
BEGIN
SELECT QuantidadeDisponivel INTO qtdDisponivel
FROM Estoque
WHERE ProdutoID = :NEW.ProdutoID;
IF qtdDisponivel <= 0 THEN
RAISE_APPLICATION_ERROR(-20001, 'Estoque
insuficiente.');
END IF;
END;
CREATE OR REPLACE TRIGGER VerificaEstoque
BEFORE INSERT ON Pedidos
DECLARE
qtdDisponivel NUMBER;
BEGIN
SELECT QuantidadeDisponivel INTO qtdDisponivel
FROM Estoque
WHERE ProdutoID = :NEW.ProdutoID;
IF qtdDisponivel < :NEW.Quantidade THEN
RAISE_APPLICATION_ERROR(-20002, 'Estoque
insuficiente para o pedido.');
END IF;
END;
CREATE OR REPLACE TRIGGER VerificaEstoque
BEFORE INSERT ON Pedidos
FOR EACH ROW
DECLARE
qtdDisponivel NUMBER;
BEGIN
SELECT QuantidadeDisponivel INTO qtdDisponivel
FROM Estoque
WHERE ProdutoID = :NEW.ProdutoID;
IF qtdDisponivel < :NEW.Quantidade THEN
RAISE_APPLICATION_ERROR(-20002, 'Estoque
insuficiente para o pedido.');
END IF;
END;