Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Gerenciar erros por identificadores de hospedagem duplicados.

USE `insight_places`;
DROP PROCEDURE IF EXISTS `insight_places`.`novoAluguel_26`;

DELIMITER $$
USE `insight_places`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `novoAluguel_26`
(vAluguel VARCHAR(10), vCliente VARCHAR(10), vHospedagem VARCHAR(10), vDataInicio DATE, vDataFinal DATE, vPrecoUnitario DECIMAL(10,2))
BEGIN
    DECLARE vDias INTEGER DEFAULT 0;
    DECLARE vPrecoTotal DECIMAL(10,2);
     DECLARE vMensagem VARCHAR(100);
     DECLARE EXIT HANDLER FOR 1062
     BEGIN
         SET vMensagem = "Identificadores de hospedagem duplicados.";
         SELECT vMensagem;
     END;
    SET vDias = (SELECT DATEDIFF(vDataFinal, vDataInicio));
    SET vPrecoTotal = vDias * vPrecoUnitario;
    INSERT INTO alugueis VALUES (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
        SET vMensagem = "Aluguel incluído na base com sucesso.";
        SELECT vMensagem;
END$$
DELIMITER ;

Print da execução

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Terezinha! Como vai?
Agradeço por compartilhar seu código com a comunidade Alura.

Uma dica interessante para o futuro é incluir uma verificação antes da inserção, usando o IF EXISTS para conferir se o identificador já está presente na tabela. Assim, você evita até mesmo que o erro aconteça. Veja um exemplo:


IF EXISTS (SELECT 1 FROM alugueis WHERE hospedagem = vHospedagem) THEN
    SET vMensagem = 'Hospedagem ja cadastrada.';
    SELECT vMensagem;
ELSE
    INSERT INTO alugueis VALUES (vAluguel, vCliente, vHospedagem, vDataInicio, vDataFinal, vPrecoTotal);
END IF;

Esse trecho confere se o valor já existe antes de inserir, mantendo o banco mais limpo e seguro.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!