Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2025

Banco de DadosSQL
Código
fg115306
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Desenvolvimento de Sistemas
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:
  1. AGRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo TO dadosadm;
  2. BREVOKE SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON processo FROM dadosadm;
  3. CALTER DEFAULT PRIVILEGES ON processo GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON TABLES TO dadosadm;
  4. DSET TRANSACTION READ WRITE ON processo TO dadosadm;
  5. 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.

Gabarito: letra E

Link permanente: /questoes/fg115306