Escolar Documentos
Profissional Documentos
Cultura Documentos
Exceções
(Exceptions)
“Se você tem uma maçã e eu tenho outra; e nós trocamos as maçãs,
Profº: Joseph Donald então cada um terá sua maçã. Mas se você tem uma ideia e eu tenho
outra, e nós as trocamos; então cada um terá duas ideias.”
Contatos:
joseph.vieira@facape.br
George Bernard Shaw
Banco de Dados II
Profº: Joseph Donald
Exceções (Exceptions)
• Uma exceção é uma mensagem de erro que pode ser levantada por um
procedimento ou um gatilho.
BEGIN
DECLARE <ação do manipulador> HANDLER FOR <condição>
END
BEGIN
DECLARE exit HANDLER FOR sqlexception
BEGIN
SELECT ‘Ocorreu um erro de inserção’ AS MENSAGEM;
END
INSERT INTO vendedor (id_vendedor, nome) VALUES (mat_vend, nome_vend);
SELECT (id_vendedor, nome) FROM vendedor;
END //
Banco de Dados II
Profº: Joseph Donald
Exceções (Exceptions)
• Caso necessite de algo mais específico para o erro encontrado, podemos verificar
o erro vindo do Handler a partir do código de erro.
• Exemplo:
• Nesse caso, o erro 1062 no MySQL indica erro de duplicidade em um atributo onde
somente são aceitos valores únicos.
BEGIN
DECLARE exit HANDLER FOR 1062
BEGIN
SELECT ‘Já existe uma matrícula cadastrada com esse número’ AS
MENSAGEM;
END;
INSERT INTO vendedor (id_vendedor, nome) VALUES (id_vend, nome_vend);
SELECT id_vendedor, nome FROM vendedor;
END //
Banco de Dados II
Profº: Joseph Donald
Exceções (Exceptions)
• Exemplo: Altere o campo “dt_nasc” para NOT NULL.
DELIMITER //
CREATE PROCEDURE inserir_vendedor (id_vend, nome_vend varchar(30), data_nasc date)
BEGIN
DECLARE exit HANDLER FOR 1048
BEGIN
SELECT ‘Todos os campos obrigatório devem ser preenchidos.’ AS MENSAGEM;
END;
INSERT INTO vendedor (id_vendedor, nome, dt_nasc) VALUES (id_vend, nome_vend,
data_nasc);
SELECT id_vendedor, nome FROM vendedor;
END //
Banco de Dados II
Transações (Transactions) Profº: Joseph Donald
COMMIT
• Se uma transação for concluída com sucesso (todas as operações bem-sucedidas), o banco de
dados será alterado permanentemente, com os dados persistidos (salvos no disco).
ROLLBACK
• Se houver falha em qualquer uma das operações que compõem a transação, o banco deverá ser
retornado ao estado anterior antes da transação.
Ou seja:
✓ Todas as transações possuem início e fim.
✓ As transações podem ser salvas (consolidadas no banco de dados) ou desfeitas.
✓ Caso uma transação falhe no meio da execução de suas operações, nenhuma das operações será
salva no banco de dados – todas serão desfeitas.
Banco de Dados II
Transações (Transactions) Profº: Joseph Donald
SINTAXE / EXEMPLO:
INSERT INTO usuario (nome, email) VALUES
('Donald', 'josephdonald.pi@gmail.com'), ('Jonas', 'jonas@gmail.com'), ('Mayra', 'mayra@gmail.com’);
SINTAXE / EXEMPLO: