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)
OracleQue 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.
Autres entrées pour ce moteur
- ORA-04068existing state of packages has been discarded (l'état existant des packages a été supprimé)
- ORA-01427single-row subquery returns more than one row (une sous-requête mono-ligne renvoie plusieurs lignes)
- ORA-12899value too large for column (valeur trop grande pour la colonne)
- ORA-08103object no longer exists (l'objet n'existe plus)
- ORA-01843not a valid month (mois invalide)
- ORA-14400inserted partition key does not map to any partition (la clé de partition insérée ne correspond à aucune partition)
- ORA-01536space quota exceeded for tablespace (quota d'espace dépassé pour le tablespace)