Em relação às possíveis mudanças que podem ser realizadas com instruções SQL, escolha a seguir a única alternativa correta:
Questão
Em relação às possíveis mudanças que podem ser realizadas com instruções SQL, escolha a seguir a única alternativa correta:
Alternativas
A) Para aumentar o tamanho de uma coluna do tipo chave primária, primeiro você realiza a alteração na tabela principal e posteriormente altera as tabelas que recebem o relacionamento (foreign keys).
B) É possível alterar uma coluna não obrigatória (null) para obrigatória (not null) sempre que necessário, independente se existirem dados na tabela ou não.
C) Para aumentar o tamanho de uma coluna do tipo chave primária, primeiro você realiza a alteração na tabela principal e automaticamente as outras tabelas que detêm o relacionamento como (foreign keys) serão modificadas automaticamente.
D) É possível alterar uma coluna não obrigatória (null) para obrigatória (not null), desde que a tabela esteja vazia ou caso tenha registros, existam valores na coluna que irá ser alterada (para todos os registros).
E) Existem inúmeras restrições para alterar uma coluna obrigatória (not null) para não obrigatória (null).
Explicação
Para avaliar as alternativas, considere regras gerais de integridade ao alterar esquema (DDL) em SQL:
- Alterar coluna de NULL para NOT NULL
- A mudança para NOT NULL só é permitida se nenhuma linha violar a nova restrição.
- Ou seja:
- se a tabela estiver vazia, não há violação; ou
- se houver dados, todas as linhas devem ter valor não nulo nessa coluna (senão o comando falha). Isso corresponde exatamente ao que diz a alternativa D.
- Por que as demais estão erradas
- A) Ao aumentar o tamanho de uma coluna que é PK e é referenciada por FK, em geral você não consegue simplesmente alterar primeiro a tabela “principal” se existirem FKs dependentes com tipos/tamanhos compatíveis que precisem acompanhar; normalmente é necessário tratar as constraints (dropar/recriar) e garantir compatibilidade. Não é uma regra “alterar principal e depois dependentes” como algo sempre possível/necessário dessa forma.
- B) Errada porque não é independente de existirem dados: se houver qualquer NULL na coluna, não dá para impor NOT NULL sem antes corrigir os dados.
- C) Errada porque alterações na PK não “propagam automaticamente” para colunas FK em outros tabelas na maioria dos SGBDs; você precisa garantir compatibilidade/alterar explicitamente (muitas vezes removendo e recriando a constraint).
- E) Em geral, mudar de NOT NULL para NULL costuma ser uma alteração mais simples (menos restritiva), não “inúmeras restrições” como regra geral.
Portanto, a única alternativa correta é a D.
Alternativa correta: (D).