Questão nº 61
Questão de Informática/Banco de Dados · FGV MPMS 2012 (nº 61)
FGV2012Analista - Informática/Banco de DadosInformática/Banco de Dados
Gabarito: Bver comentário ↓
As declarações SQL, passíveis de serem desfeitas pela declaração ROLLBACK do MySQL versão 5.5, estão listadas a seguir, à exceção de uma. Assinale-a.
- AINSERT e DROP TABLE.
- BDROP DATABASE e ALTER TABLE. (alternativa correta)
- CUPDATE e CREATE DATABASE.
- DDELETE e UPDATE.
- ESELECT e INSERT TABLE.
Resposta comentada
Gabarito Alternativa B
ROLLBACK é um comando SQL que desfaz todas as alterações de dados feitas desde o início de uma transação ou desde o último COMMIT. Ele só funciona para comandos que modificam dados (DML), como INSERT, UPDATE e DELETE, e não para comandos que definem a estrutura do banco de dados (DDL), que são auto-commit e não podem ser desfeitos.
- (A) Incorreta:
INSERTé um comando DML e pode ser desfeito porROLLBACK.DROP TABLEé um comando DDL e não pode ser desfeito, além de implicitamente finalizar a transação. Como um dos comandos pode ser desfeito, esta não é a exceção onde nenhum pode. - (B) Correta:
DROP DATABASEeALTER TABLEsão ambos comandos DDL (Data Definition Language). Comandos DDL modificam a estrutura do banco de dados (tabelas, bancos, etc.) e, no MySQL (e na maioria dos SGBDs), são auto-commit, ou seja, eles finalizam qualquer transação aberta e suas alterações são permanentes, não podendo ser desfeitas por umROLLBACK. Esta é a exceção, pois nenhum dos comandos pode ser desfeito. - (C) Incorreta:
UPDATEé um comando DML e pode ser desfeito porROLLBACK.CREATE DATABASEé um comando DDL e não pode ser desfeito. Como um dos comandos pode ser desfeito, esta não é a exceção onde nenhum pode. - (D) Incorreta:
DELETEeUPDATEsão ambos comandos DML (Data Manipulation Language). Eles modificam dados dentro das tabelas e são totalmente passíveis de serem desfeitos por umROLLBACKse executados dentro de uma transação. Esta alternativa não é a exceção. - (E) Incorreta:
SELECTé um comando DQL (Data Query Language) e não modifica dados, portanto, não há nada para ser desfeito porROLLBACK.INSERT TABLE(assumindoINSERT) é um comando DML e pode ser desfeito porROLLBACK. A armadilha aqui é queSELECTnão é "desfeito" porque não faz nenhuma alteração, masINSERTsim. Como um dos comandos pode ser desfeito, esta não é a exceção onde nenhum pode.
Fonte: FGV MPMS 2012 Analista - Informática/Banco de Dados. Reproduzida para fins de estudo.