Questão de Banco de Dados — Outros SGBDs e Questões Mescladas — FGV 2023
- Código
- fg161169
- Banca
- FGV
- Órgão
- Pref Niterói
- Ano
- 2023
- Cargo
- Ana ( )
- Aquery;
- Bdirective;
- Cmutations;
- Dintrospection;
- Esubscriptions.
GabaritoC — mutations;
Gabarito: letra C. Em GraphQL, a operação utilizada para inserir, atualizar ou apagar dados é a mutation — o trecho do enunciado, com insert_tarefa, é exatamente uma mutation de escrita. As queries são para leitura, subscriptions para eventos em tempo real, directives para modificar a execução e introspection para consultar o esquema.
GraphQL é uma linguagem de consulta para APIs que define três tipos de operação principais: query (leitura), mutation (escrita) e subscription (assinatura de eventos em tempo real). Cada uma tem um papel específico e é declarada no corpo da requisição. A mutation é a operação que altera o estado do servidor — cria, atualiza ou deleta dados — e é exatamente o que o código do enunciado faz ao chamar insert_tarefa.
A sintaxe do trecho é típica de uma mutation: o nome da operação (insert_tarefa) recebe argumentos (objects: [...]) e retorna um bloco com os campos desejados (returning { id, criado_em }). Isso é o padrão de escrita em GraphQL, usado por servidores como Hasura ou Postgraphile.
A pegadinha da banca está em confundir os papéis: quem não conhece GraphQL pode achar que insert_tarefa é uma query, mas o verbo "insert" já denuncia que é uma mutation. Além disso, é comum confundir mutation com subscription, mas subscription é para notificações contínuas, não para escrita pontual.
Guarde a distinção central: query = leitura, mutation = escrita, subscription = tempo real. É nessa fronteira que as alternativas se separam.
query é o tipo de operação para leitura de dados. No GraphQL, queries são usadas para buscar informações sem alterar o estado do servidor. O trecho do enunciado insere dados (insert_tarefa), o que é uma operação de escrita — portanto, não é uma query.
directive é um recurso que permite modificar a execução de uma query ou mutation, como @include ou @skip. Não é um tipo de operação, mas um modificador aplicado a campos ou fragmentos. O enunciado pede o tipo de operação para escrita, que é mutation.
mutation é o tipo de operação usado para inserir, atualizar ou apagar dados em GraphQL. O trecho do enunciado, com insert_tarefa, é uma mutation típica: recebe argumentos de escrita (objects) e retorna os dados alterados (returning). É exatamente o que a alternativa descreve.
introspection é um recurso que permite consultar o esquema da API, ou seja, descobrir quais tipos, campos e operações estão disponíveis. Não é um tipo de operação para escrita de dados, mas uma capacidade do servidor GraphQL de descrever a si mesmo.
subscription é o tipo de operação para assinar eventos em tempo real, recebendo atualizações contínuas do servidor. Não é usado para escrita pontual como inserir, atualizar ou apagar dados — isso é papel da mutation.
Para fixar, lembre-se do paralelo com SQL: query ≈ SELECT, mutation ≈ INSERT/UPDATE/DELETE, subscription ≈ triggers/notificações. Se o verbo da operação for de escrita (insert, update, delete), é mutation — não caia na pegadinha de achar que é query.
Gabarito: letra C
Link permanente: /questoes/fg161169