O administrador de banco de dados Pedro criou o papel dadosadm para cadastrar os funcionários do MPU que desempenham a função de Administrador de Dados usando o seguinte comando SQL no PostgreSQL: CREATE ROLE dadosadm WITH LOGIN PASSWORD 'admin'; Para que o papel dadosadm possa alterar a estrutura, bem como adicionar e remover linhas e colunas da tabela processo com controle total, Pedro deve usar o seguinte comando SQL:
- A)GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo TO dadosadm;
Errada, porque GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE concede acesso aos dados, mas não transfere o controle estrutural da tabela.
- B)REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo FROM dadosadm;
Errada, porque REVOKE faz o oposto: remove privilégios, em vez de conceder poderes ao papel.
- C)ALTER DEFAULT PRIVILEGES ON processo GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO dadosadm;
Errada, porque ALTER DEFAULT PRIVILEGES atua sobre privilégios padrão para objetos futuros, não sobre a tabela processo já existente, e a sintaxe está inadequada para o caso.
- D)SET TRANSACTION READ WRITE ON processo TO dadosadm;
Errada, porque SET TRANSACTION READ WRITE trata do modo da transação, não de permissões ou propriedade de tabela.
- E)ALTER TABLE processo OWNER TO dadosadm;
Certa, porque ALTER TABLE processo OWNER TO dadosadm transfere a propriedade da tabela, dando controle total sobre o objeto no PostgreSQL.
Gabarito: E
Em SQL, há uma diferença importante entre dar permissões e transferir a titularidade do objeto. Quando voce usa GRANT, voce distribui privilégios específicos, como selecionar, inserir, atualizar ou apagar dados. Isso pode até permitir bastante coisa, mas não transforma o usuário em dono da tabela. A questão fala em “alterar a estrutura” e ter “controle total” sobre a tabela processo. Isso aponta para ownership, ou seja, para o proprietário do objeto, que pode mexer em praticamente tudo nele, inclusive alterar definição, conceder privilégios e executar operações administrativas sobre a tabela. No PostgreSQL, o comando que faz essa mudança é ALTER TABLE processo OWNER TO dadosadm;. Ao virar dono da tabela, o papel dadosadm passa a ter controle completo sobre o objeto. É exatamente por isso que a alternativa E está correta. As demais opções tentam confundir voce com lista de privilégios de DML. Esses comandos lidam com dados, não com a estrutura e a propriedade do objeto. Em prova, quando aparecer “controle total” e “alterar estrutura”, desconfie: geralmente a banca quer ownership, não só GRANT.