DBAtlas · Atlas d'exploitation des bases de données

ORA-30926: unable to get a stable set of rows in the source tables (impossible d'obtenir un ensemble stable de lignes dans les tables source)

Oracle

Que signifie cette erreur ?

Dans une instruction MERGE (ou une jointure modifiable), le côté source a produit plusieurs lignes correspondantes pour la même ligne cible. Oracle a arrêté l'opération, car il ne peut pas décider avec quelle valeur source effectuer la mise à jour.

Cause

La source de MERGE ... USING contient des correspondances en double pour la condition ON ; la requête source n'est pas unique sur la clé cible ; plusieurs lignes source correspondent à la même ligne cible.

Comment la corriger

Rendez la requête source unique sur la clé cible. Trouvez les correspondances en double : SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; Dédoublonnez la source avec DISTINCT ou une fonction d'agrégation/analytique (ROW_NUMBER), puis relancez le MERGE. Assurez-vous que la condition ON est suffisamment sélective.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur