Pular para o conteúdo principal

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

Banco de DadosSQL
Código
fg116235
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Suporte e Infraestrutura
O analista Juca precisa criar um esquema no banco de dados processos e atribuir direitos para o perfil ad1. Para isso, com o perfil dadosadm, Juca definiu os seguintes passos:1. criar o esquema processos; e2. atribuir ao perfil ad1 o direito de apagar os registros das tabelas do esquema processos, criados por dadosadm, podendo usar alguma condição.No PostgreSQL, para implementar os passos definidos, Juca deve executar os comandos:
  1. ACREATE SCHEMA processos;CREATE PRIVILEGES FOR ROLE dadosadm IN SCHEMAprocessos GRANT TRUNCATE ON TABLES TO ad1;
  2. BSET SCHEMA processos;SET DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMAprocessos GRANT USAGE ON TABLES TO ad1;
  3. CINSERT SCHEMA processos GRANTED BY dadosadm;GRANT UPDATE FOR ROLE dadosadm IN SCHEMA processos;
  4. DCREATE SCHEMA processos AUTHORIZATION dadosadm;ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMAprocessos GRANT DELETE ON TABLES TO ad1;
  5. EBEGIN SCHEMA processos;SET PRIVILEGES FOR ROLE dadosadm IN SCHEMA processosREVOKE TRUNCATE ON TABLES TO ad1;
Revelar gabarito e comentário

GabaritoD — CREATE SCHEMA processos AUTHORIZATION dadosadm; ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT DELETE ON TABLES TO ad1;

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”.

PostgreSQL: CREATE SCHEMA e ALTER DEFAULT PRIVILEGES

Gabarito: letra D. A alternativa D contém a sintaxe correta no PostgreSQL: CREATE SCHEMA processos AUTHORIZATION dadosadm define o proprietário do esquema como dadosadm, e ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT DELETE ON TABLES TO ad1 concede ao perfil ad1 o direito de apagar registros (DELETE) nas futuras tabelas criadas por dadosadm dentro do esquema. Os comandos GRANT e REVOKE comuns concederiam permissões em tabelas já existentes; para que as permissões valham para tabelas que ainda serão criadas pelo proprietário, usa-se ALTER DEFAULT PRIVILEGES.

A questão exige conhecimento de dois comandos específicos do PostgreSQL: CREATE SCHEMA com AUTHORIZATION (para definir quem é o dono do esquema) e ALTER DEFAULT PRIVILEGES (para definir permissões padrão em objetos futuros criados por um determinado usuário). O direito solicitado é o de apagar registros com condição, que corresponde ao privilégio DELETE.

  1. 1Criar esquema com proprietárioCREATE SCHEMA ... AUTHORIZATION
  2. 2Definir permissões padrãoALTER DEFAULT PRIVILEGES FOR ROLE ... GRANT DELETE ON TABLES
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O comando CREATE PRIVILEGES não existe no PostgreSQL. A atribuição de privilégios é feita com GRANT (DCL) e não com CREATE (DDL). Além disso, o privilégio TRUNCATE não permite apagar registros seletivamente com condição; DELETE é o correto para remoção condicional de linhas.

Alternativa B — ❌ Incorreta

SET SCHEMA processos apenas altera o esquema padrão da sessão, não cria o esquema. Mesmo que o esquema já existisse, USAGE é um privilégio que permite acessar objetos do esquema (como usar os nomes das tabelas), mas não autoriza a apagar registros. O correto seria CREATE SCHEMA e GRANT DELETE.

Alternativa C — ❌ Incorreta

INSERT SCHEMA não é uma sintaxe válida no PostgreSQL. A criação de esquema é feita com CREATE SCHEMA. Além disso, GRANT UPDATE concede o privilégio de atualizar dados, não de apagar.

Alternativa D — ✅ Correta ⟵ GABARITO

A sintaxe CREATE SCHEMA processos AUTHORIZATION dadosadm cria o esquema nomeado processos e define o usuário dadosadm como seu proprietário. Em seguida, ALTER DEFAULT PRIVILEGES FOR ROLE dadosadm IN SCHEMA processos GRANT DELETE ON TABLES TO ad1 assegura que todas as tabelas que dadosadm criar no futuro dentro do esquema processos terão o privilégio DELETE concedido ao perfil ad1. Dessa forma, o perfil ad1 poderá apagar registros com condição (DELETE FROM tabela WHERE ...), exatamente como desejado.

Alternativa E — ❌ Incorreta

BEGIN SCHEMA não é um comando válido. BEGIN é usado para iniciar uma transação, não para criar esquemas. SET PRIVILEGES também não existe. REVOKE remove privilégios, enquanto o enunciado pede para atribuir direitos.

NÃO CAIA NESSA!

A pegadinha central é trocar DELETE por TRUNCATE (alternativa A) e GRANT por CREATE PRIVILEGES. O TRUNCATE remove todas as linhas de uma tabela de uma vez, sem condição, e exige privilégio TRUNCATE. Já DELETE permite filtrar com WHERE. Outra troca comum é usar GRANT comum em vez de ALTER DEFAULT PRIVILEGES; este último é necessário para que as permissões se apliquem a tabelas futuras criadas pelo proprietário.

Gabarito: letra D.

Link permanente: /questoes/fg116235