Supondo que o cliente de número 0 (zero) deva ser eliminado. A seguinte instrução SQL foi executada pela equipe técnica: DELETE FROM T_CLIENTE WHERE CD_CLIENTE = 0; Baseando-se no fato de que a coluna cd_cliente é do tipo number e o cliente de código 0 (zero) não está cadastrado na tabela T_CLIENTE, qual será a resposta do SGBDR para a instrução executada acima?
Questão
Supondo que o cliente de número 0 (zero) deva ser eliminado. A seguinte instrução SQL foi executada pela equipe técnica:
DELETE FROM T_CLIENTE WHERE CD_CLIENTE = 0;
Baseando-se no fato de que a coluna cd_cliente é do tipo number e o cliente de código 0 (zero) não está cadastrado na tabela T_CLIENTE, qual será a resposta do SGBDR para a instrução executada acima?
DELETE FROM T_CLIENTE WHERE CD_CLIENTE = 0;
Alternativas
A) Uma mensagem de erro, informando que não é possível eliminar o cliente, pois existem pedidos de venda associados a ele.
B) Uma mensagem de confirmação, informando que somente o código do cliente foi eliminado.
C) Uma mensagem de confirmação, informando que o cliente não foi encontrado, porém a instrução SQL foi executada com sucesso.
D) Uma mensagem de erro, informando que o código 0 (zero) é inválido.
E) Uma mensagem de erro informando que essa sintaxe não é válida.
Explicação
A instrução executada foi:
-
Sintaxe: a sintaxe do comando
DELETEestá correta (forma geral:DELETE FROM tabela WHERE condição;). Portanto, não há erro de sintaxe. -
Tipo da coluna: como
CD_CLIENTEé do tipo NUMBER, comparar com0é totalmente válido. Logo, não existe erro por “código inválido” apenas por ser zero. -
Registro inexistente: se não existe cliente com
CD_CLIENTE = 0, então a condição doWHEREnão encontra linhas. Nesse caso, o SGBD executa o comando com sucesso, porém 0 linhas são afetadas (apagadas). Em geral, a resposta é uma confirmação de execução (podendo indicar “0 rows deleted/affected”).
Assim, a execução é bem-sucedida, apenas não remove nada porque o registro não existe.
Alternativa correta: (C).