DBAtlas · Atlas für Datenbankbetrieb

ORA-30926: unable to get a stable set of rows in the source tables (keine stabile Zeilenmenge in den Quelltabellen)

Oracle

Was bedeutet das?

In einem MERGE-Statement (oder einem aktualisierbaren Join) hat die Quellseite für dieselbe Zielzeile mehr als eine passende Zeile geliefert. Oracle hat die Operation gestoppt, weil es nicht entscheiden kann, mit welchem Quellwert aktualisiert werden soll.

Ursache

Die Quelle in MERGE ... USING enthält doppelte Treffer für die ON-Bedingung; die Quellabfrage ist auf dem Zielschlüssel nicht eindeutig; mehrere Quellzeilen werden derselben Zielzeile zugeordnet.

Lösung

Mache die Quellabfrage auf dem Zielschlüssel eindeutig. Doppelte Treffer finden: SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; Dedupliziere die Quelle mit DISTINCT oder einer Aggregat-/analytischen Funktion (ROW_NUMBER) und führe das MERGE erneut aus. Stelle sicher, dass die ON-Bedingung selektiv genug ist.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank