Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-30926 :impossible d'obtenir un ensemble stable de lignes dans les tables source lors de la fusion de tables

C'est une affaire un peu délicate. La raison principale est que vous semblez avoir des doublons dans la colonne TMP_DP_REGIAO.DS_PROTHEUS_CODE et que MERGE essaie de mettre à jour plusieurs fois la même ligne de la table de destination. Mais si les nouvelles valeurs et les anciennes valeurs dans les colonnes mises à jour sont identiques, Oracle peut ignorer ce problème de doublons :

SQL> select * from t;

      CODE TEXT                                                                 
---------- ----------                                                           
         1 test                                                                 

SQL> merge into t using (
  2   select 1 code,'test' text from dual union all
  3   select 1 code,'test' text from dual
  4  ) s
  5  on (t.code = s.code)
  6  when matched then
  7    update set t.text = s.text
  8  /

2 rows merged 

Mais si les anciennes et les nouvelles valeurs sont différentes, Oracle lève l'exception que vous obtenez :

SQL> merge into t using (
  2   select 1 code,'a' text from dual union all
  3   select 1 code,'a' text from dual
  4  ) s
  5  on (t.code = s.code)
  6  when matched then
  7    update set t.text = s.text
  8  /
merge into t using (
           *
error in line 1:
ORA-30926: unable to get a stable set of rows in the source tables