Boa tarde.
Queria ter postado isso antes (na época que estava estudando pra 70-461) mas acabei esquecendo, hehe.
Bem, a lição de hoje é:
Preste bem atenção na sua fonte de estudo e não confie sem validar.
Sendo óbvio e redundante, convenhamos que o ser humano erra, pois não é perfeito. Quem nunca errou que atire a primeira transação.
Mas enfim, o que ia postar na época era esta questão que veio junto com o prep-kit do Training Kit 70-461 (Microsoft SQL Server 2012 Querying).
Clique na imagem para melhor visualização, por gentileza:
Resumindo…
SCRIPT de CREATE de duas tabelas.
Uma procedure.
A procedure supostamente tem como objetivo inserir os dados de uma tabela em outra.
Sabe qual é a opção correta para fazer o script inserir sem nenhum problema os dados da Tabela A pra B?
Nenhuma
A resposta
Explicando melhor, é possível ver qual seria a resposta do simulado detalhando em um botão.
Não vamos entrar no mérito do assunto IDENTITY (porque o assunto merecia mais algum texto) , então decidi deixar aqui a resposta oficial do Prep-kit (destacada de amarelo) e um questionamento destacado de vermelho.
A resposta proposta parece estar correta, se levarmos em conta a ordem das colunas e apenas isso. Mas, vale lembrar que ambas as tabelas possuem o campo orderid como identity… Tentar inserir valores explicitamente sem o uso de um SET apropriado para isso (como por exemplo, o SET IDENTITY_INSERT ) dará erro, e infelizmente tal configuração sequer foi mencionada na questão, então podemos desconsiderá-la. Portanto, no mundo sem treino, da teoria, a alternativa C estaria correta. No mundo real, não, inclusive é um erro bem recorrente em projetos de ETL inserções invalidas deste tipo.
Mas o que você quer dizer com isso tudo?
Que não importa a fonte, valide informações técnicas, testando e lendo de outras fontes.
E por mais que a fonte possa parecer impecável, erros podem acontecer. Note que a questão veio do Training Kit. É o material oficial de preparatório para o exame. E deixando claro aqui, é um bom material em linhas gerais, não venho aqui no artigo reclamar do mesmo. A minha intenção foi outra (de alertar sobre a validação de informação) e transmitir uma informação incorreta (ou questionável) é um ato passível pra qualquer ser humano (inclusive, se eu tiver passado algo assim, me alertem sem dó).
Resumindo, não confie em ninguém (recomendação de leitura fortíssima).
Teste. Valide SEMPRE. Seja curioso. Repita alguns testes pra aumentar a certeza.
Pode parecer besteira, mas este tipo de cilada em exames de certificação significa alguns pontos perdidos, e na vida real, pode significar alguns minutos perdidos enfrentando troubleshootings de qualquer tipo pra depois falar “pô mas eu não tinha entendido assim”. E isso é uma realidade bem palpável.
Fique à vontade para comentar, dar sua impressão sobre o assunto.
[]’s
Boa observação Renato!!!! Essa dica vale pra todos!!!! Valews…