ORA-30926: unable to get a stable set of rows in the source tables
OracleNe demek?
Bir MERGE (veya güncellenebilir join) ifadesinde, kaynak (source) tarafı hedefteki (target) aynı satır için birden fazla eşleşen satır üretti. Oracle hangi kaynak değeriyle güncelleyeceğine karar veremediği için işlemi durdurdu.
Neden olur?
MERGE ... USING kaynağının, ON koşulu için mükerrer (duplicate) eşleşmeler içermesi; kaynak sorgusunun hedef anahtarına göre benzersiz olmaması; birden çok kaynak satırının aynı hedef satıra denk gelmesi.
Nasıl çözülür?
Kaynak sorgusunu hedef anahtarına göre benzersiz hale getirin. Mükerrer eşleşmeleri bulun: SELECT anahtar, COUNT(*) FROM (kaynak_sorgu) GROUP BY anahtar HAVING COUNT(*) > 1; Kaynağı DISTINCT ya da bir toplama/analitik (ROW_NUMBER) ile tekilleştirin, sonra MERGE'i tekrar çalıştırın. ON koşulunun yeterince ayırt edici olduğundan emin olun.
Aynı motorda diğer kayıtlar
- 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