Imagem de fundo

Um desenvolvedor precisa criar um bloco PL/SQL que insere novos registros em uma tabela...

Um desenvolvedor precisa criar um bloco PL/SQL que insere novos registros em uma tabela Clientes, que inclui as colunas ClienteID, Nome, Email e DataCadastro. Caso um registro com o mesmo Email já exista, uma exceção customizada deve ser levantada, indicando que o e-mail já está em uso.


DECLARE

e_email_em_uso EXCEPTION;

PRAGMA EXCEPTION_INIT(e_email_em_uso, -20001);

BEGIN

INSERT INTO Clientes(ClienteID, Nome, Email, DataCadastro)

VALUES (clienteSeq.NEXTVAL, 'Nome do Cliente',

'[email protected]', SYSDATE);

EXCEPTION

WHEN DUP_VAL_ON_INDEX THEN

RAISE_APPLICATION_ERROR(-20001, 'Email já está em uso.')

END;


Considerando esses requisitos, qual dos seguintes blocos PL/SQL atende melhor à necessidade?


A

Utiliza a exceção DUP_VAL_ON_INDEX para capturar a tentativa de inserção de um e-mail duplicado, lançando e_email_em_uso com uma mensagem customizada.


B

Cria um trigger BEFORE INSERT na tabela Clientes para verificar a existência do e-mail e, em caso positivo, levanta a exceção e_email_em_uso.


C

Implementa uma consulta SELECT antes do INSERT para verificar a existência do e-mail. Se encontrado, levanta a exceção e_email_em_uso usando RAISE_APPLICATION_ERROR.


D

Emprega um bloco BEGIN ... END sem tratamento de exceção, assumindo que a restrição de unicidade no banco de dados previne a inserção de e-mails duplicados automaticamente.