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:
AGRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo TO dadosadm;
BREVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo FROM dadosadm;
CALTER DEFAULT PRIVILEGES ON processo GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO dadosadm;
DSET TRANSACTION READ WRITE ON processo TO dadosadm;
EALTER TABLE processo OWNER TO dadosadm;
Revelar gabarito e comentário▾
GabaritoE — ALTER TABLE processo OWNER TO dadosadm;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Privilégios de proprietário de tabela no PostgreSQL
Gabarito: letra E. O proprietário de uma tabela (owner) possui controle total sobre ela, incluindo a capacidade de alterar sua estrutura (adicionar/remover colunas) e manipular dados. A transferência de propriedade é feita com ALTER TABLE ... OWNER TO. Nenhuma outra alternativa concede o conjunto completo de privilégios exigido.
Alternativa
Comando
Efeito sobre a tabela processo
Atende ao requisito?
Motivo
A
GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo TO dadosadm;
Concede privilégios DML e TRUNCATE, mas não DDL (ALTER, DROP).
❌
Não permite alterar estrutura (adicionar/remover colunas).
B
REVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo FROM dadosadm;
Remove privilégios existentes.
❌
Não concede nada; é o oposto do desejado.
C
ALTER DEFAULT PRIVILEGES ON processo GRANT ... ON TABLES TO dadosadm;
Altera privilégios padrão para futuras tabelas no esquema, não afeta a tabela processo já existente.
❌
Não concede privilégios sobre a tabela atual.
D
SET TRANSACTION READ WRITE ON processo TO dadosadm;
Comando inválido para concessão de privilégios; define modo de transação.
❌
Sintaxe e semântica incorretas para o contexto.
E
ALTER TABLE processo OWNER TO dadosadm;
Transfere a propriedade da tabela para dadosadm. O proprietário tem controle total (DDL + DML).
✅
Única opção que concede todos os privilégios necessários.
Alternativa A — ❌ Incorreta
Concede apenas privilégios DML (SELECT, INSERT, UPDATE, DELETE) e TRUNCATE, mas não inclui comandos DDL como ALTER TABLE, necessário para alterar a estrutura da tabela.
Alternativa B — ❌ Incorreta
O comando REVOKE remove privilégios, não concede. Portanto, não atende ao objetivo.
Alternativa C — ❌ Incorreta
ALTER DEFAULT PRIVILEGES altera os privilégios padrão para objetos futuros criados em um esquema, não concede privilégios sobre a tabela já existente processo.
Alternativa D — ❌ Incorreta
SET TRANSACTION READ WRITE define o modo de uma transação, não é um comando de concessão de privilégios. Sintaxe inválida para o contexto.
Alternativa E — ✅ Correta ⟵ GABARITO
ALTER TABLE processo OWNER TO dadosadm; transfere a propriedade da tabela para a role dadosadm. O proprietário de uma tabela no PostgreSQL tem automaticamente todos os privilégios sobre ela, incluindo ALTER, DROP, INSERT, UPDATE, DELETE, TRUNCATE, etc. Isso atende plenamente ao requisito de "alterar a estrutura, bem como adicionar e remover linhas e colunas com controle total".
NÃO CAIA NESSA!
O candidato pode pensar que é necessário conceder privilégios específicos com GRANT (ALTER, etc.). No entanto, a forma mais eficiente e completa no PostgreSQL é tornar a role proprietária da tabela, o que já lhe confere todos os direitos. Fique atento: ALTER TABLE ... OWNER TO é o comando correto para transferir a propriedade.