DBAtlas · Atlas de operações de banco de dados

ORA-30926: unable to get a stable set of rows in the source tables

Oracle

O que significa?

Em uma instrução MERGE (ou um join atualizável), o lado de origem produziu mais de uma linha correspondente para a mesma linha de destino. O Oracle interrompeu a operação porque não consegue decidir com qual valor de origem atualizar.

Por que acontece?

A origem do MERGE ... USING contém correspondências duplicadas para a condição ON; a consulta de origem não é única na chave de destino; várias linhas de origem mapeiam para a mesma linha de destino.

Como resolver

Torne a consulta de origem única na chave de destino. Encontre as correspondências duplicadas: SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; Elimine as duplicatas da origem com DISTINCT ou uma função de agregação/analítica (ROW_NUMBER), e então execute o MERGE novamente. Certifique-se de que a condição ON é seletiva o suficiente.

Abrir no DBAtlas →

Mais entradas deste banco