Questão de Banco de Dados — MySQL — FCC 2024
- Código
- fc147225
- Banca
- FCC
- Órgão
- SEAD PI
- Ano
- 2024
- Cargo
- Ana Gov ( )
- AUNCHAIN
- BDEALLOCATE PREPARE
- CRELEASE
- DSET FREE
- ERELEASE PREPARE
GabaritoB — DEALLOCATE PREPARE
Gabarito: letra B. Para liberar uma instrução preparada no MySQL, o comando correto é DEALLOCATE PREPARE, que remove a instrução da memória do servidor. As demais alternativas (UNCHAIN, RELEASE, SET FREE, RELEASE PREPARE) não são comandos válidos do MySQL para essa finalidade.
Instruções preparadas (prepared statements) são um recurso do MySQL que permite preparar uma consulta SQL uma única vez e executá-la múltiplas vezes com diferentes parâmetros. Isso traz benefícios de desempenho (a consulta é compilada uma vez) e segurança (os parâmetros são tratados como dados, não como parte do SQL, prevenindo injeção de SQL). O ciclo de vida de uma instrução preparada envolve três etapas: PREPARE (cria e compila a instrução), EXECUTE (executa com os parâmetros fornecidos) e DEALLOCATE PREPARE (libera a memória).
No código do enunciado, a instrução é preparada com PREPARE instrucao FROM 'SELECT * FROM usuarios WHERE id = ?', onde o ? é um placeholder que será substituído pelo valor da variável @usuariold no momento da execução. O EXECUTE instrucao USING @usuariold executa a consulta com o valor da variável. Após a execução, a instrução permanece na memória até ser explicitamente liberada — é exatamente isso que o comando na lacuna I deve fazer.
A sintaxe correta para liberar é DEALLOCATE PREPARE nome_da_instrucao. Esse comando é o equivalente funcional do DROP PREPARE (que também é aceito como sinônimo). A instrução preparada fica disponível apenas para a sessão atual e é automaticamente liberada quando a sessão é encerrada, mas a boa prática é liberá-la explicitamente após o uso para evitar acúmulo de memória.
A pegadinha desta questão está em confundir o comando de liberação com termos de outros contextos: RELEASE e SET FREE lembram gerenciamento de memória de sistemas operacionais, UNCHAIN não existe no MySQL, e RELEASE PREPARE inverte a ordem correta dos termos. O candidato que conhece a sintaxe exata do MySQL não tem dificuldade, mas quem tenta deduzir pelo significado das palavras pode cair nas alternativas distratoras.
A banca explora a confusão entre o comando correto e termos que parecem fazer sentido no contexto de liberação de memória. RELEASE e SET FREE são termos genéricos de liberação, mas não são comandos SQL do MySQL. RELEASE PREPARE inverte a ordem dos termos — o correto é DEALLOCATE PREPARE. Memorize a sintaxe exata: DEALLOCATE PREPARE é o único comando válido.
UNCHAIN não é um comando SQL do MySQL. Não existe nenhuma instrução com esse nome no MySQL para liberar instruções preparadas ou qualquer outro recurso. É um distrator puro, sem correspondência com a sintaxe do banco.
DEALLOCATE PREPARE é o comando correto para liberar uma instrução preparada no MySQL. A sintaxe completa é DEALLOCATE PREPARE nome_da_instrucao, que remove a instrução da memória do servidor. É o comando que fecha o ciclo de vida da instrução preparada, iniciado com PREPARE e executado com EXECUTE.
RELEASE não é um comando SQL do MySQL para liberar instruções preparadas. Embora a palavra "release" signifique "liberar" em inglês, o MySQL não utiliza esse termo como comando. O comando correto é DEALLOCATE PREPARE, não apenas RELEASE.
SET FREE não é um comando SQL do MySQL. A expressão "set free" (liberar) pode parecer plausível, mas não existe nenhuma instrução com esse nome no MySQL. É um distrator que explora o significado semântico da palavra "liberar".
RELEASE PREPARE inverte a ordem dos termos do comando correto. O MySQL utiliza DEALLOCATE PREPARE, não RELEASE PREPARE. A palavra "release" não é usada nesse contexto, e a ordem correta é "DEALLOCATE" seguido de "PREPARE".
Gabarito: letra B — o comando DEALLOCATE PREPARE é o único que libera corretamente uma instrução preparada no MySQL.
Link permanente: /questoes/fc147225