ORA-30926: unable to get a stable set of rows in the source tables
OracleO 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.
Mais entradas deste banco
- ORA-04068existing state of packages has been discarded
- ORA-01427single-row subquery returns more than one row
- ORA-12899value too large for column
- ORA-08103object no longer exists
- ORA-01843not a valid month
- ORA-14400inserted partition key does not map to any partition
- ORA-01536space quota exceeded for tablespace