ORA-30926: unable to get a stable set of rows in the source tables (keine stabile Zeilenmenge in den Quelltabellen)
OracleWas 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.
Weitere Einträge zu dieser Datenbank
- ORA-04068existing state of packages has been discarded (bestehender Package-Zustand wurde verworfen)
- ORA-01427single-row subquery returns more than one row (einzeilige Unterabfrage liefert mehr als eine Zeile)
- ORA-12899value too large for column (Wert zu groß für Spalte)
- ORA-08103object no longer exists (Objekt existiert nicht mehr)
- ORA-01843not a valid month (kein gültiger Monat)
- ORA-14400inserted partition key does not map to any partition (eingefügter Partitionsschlüssel passt zu keiner Partition)
- ORA-01536space quota exceeded for tablespace (Platzkontingent für Tablespace überschritten)