Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2024

Banco de DadosPostgreSQL
Código
fc147228
Banca
FCC
Órgão
SEAD PI
Ano
2024
Cargo
Ana Gov ( )
Para definir uma ação alternativa caso um registro proposto viole uma restrição de unicidade no PostgreSQL, deve-se usar o comando
  1. AON CONFLICT
  2. BON EQUAL
  3. CWHEN CONFLICT
  4. DON MATCHED
  5. EWHEN MATCHED
Revelar gabarito e comentário

GabaritoA — ON CONFLICT

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: cláusula ON CONFLICT

Gabarito: letra A. No PostgreSQL, a cláusula ON CONFLICT é usada no comando INSERT para definir uma ação alternativa (como DO NOTHING ou DO UPDATE SET) quando um registro proposto viola uma restrição de unicidade ou exclusão. As demais alternativas não existem na sintaxe do PostgreSQL.

O INSERT no PostgreSQL permite especificar um comportamento quando há conflito com uma restrição de unicidade (chave primária, restrição UNIQUE ou EXCLUDE). A sintaxe básica é:

INSERT INTO tabela (colunas) VALUES (valores)
ON CONFLICT (coluna_conflito) DO NOTHING;
-- ou
ON CONFLICT (coluna_conflito) DO UPDATE SET coluna = valor;

A cláusula ON CONFLICT pode ser usada de duas formas principais:

  1. ON CONFLICT DO NOTHING: ignora a inserção se houver conflito, sem gerar erro.

  2. ON CONFLICT (coluna) DO UPDATE SET ...: atualiza a linha existente com os novos valores (também conhecido como upsert).

É possível especificar a coluna ou a restrição que deve ser verificada, ou omitir a lista para que qualquer conflito seja tratado.

A banca explora aqui o conhecimento da sintaxe específica do PostgreSQL. As alternativas ON EQUAL, WHEN CONFLICT, ON MATCHED e WHEN MATCHED não fazem parte da linguagem SQL do PostgreSQL. WHEN MATCHED e ON MATCHED lembram o MERGE do SQL Server/Oracle, mas não são usadas no PostgreSQL para esse fim.

Alternativa A — ✅ Correta ⟵ GABARITO

A cláusula ON CONFLICT é exatamente o mecanismo do PostgreSQL para tratar violações de unicidade durante um INSERT. Ela permite definir a ação alternativa (DO NOTHING ou DO UPDATE SET), conforme descrito acima.

Alternativa B — ❌ Incorreta

ON EQUAL não existe na sintaxe do PostgreSQL. Não há nenhuma cláusula com esse nome para tratar conflitos de unicidade.

Alternativa C — ❌ Incorreta

WHEN CONFLICT não é uma cláusula válida no PostgreSQL. A palavra-chave correta é ON CONFLICT, não WHEN CONFLICT.

Alternativa D — ❌ Incorreta

ON MATCHED não existe no PostgreSQL. Essa expressão lembra o MERGE de outros SGBDs, mas não é utilizada no PostgreSQL para essa finalidade.

Alternativa E — ❌ Incorreta

WHEN MATCHED também não é uma cláusula do PostgreSQL. É uma construção típica do MERGE do SQL Server/Oracle, mas não se aplica ao comando INSERT do PostgreSQL.

Gabarito: letra A

Link permanente: /questoes/fc147228