sql >> Database >  >> RDS >> Oracle

ORA-30926:kan geen stabiele set rijen krijgen in de brontabellen bij het samenvoegen van tabellen

Het is een beetje lastig geval. De belangrijkste reden is dat u duplicaten lijkt te hebben in de kolom TMP_DP_REGIAO.DS_PROTHEUS_CODE en MERGE probeert dezelfde rij met bestemmingstabel meerdere keren bij te werken. Maar als nieuwe waarden en oude waarden in bijgewerkte kolommen hetzelfde zijn, kan Oracle dit probleem met duplicaten overslaan:

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 

Maar als oude en nieuwe waarden verschillend zijn, verhoogt Oracle de uitzondering die u krijgt:

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 


  1. Mysql of/en voorrang?

  2. Installeer Azure Data Studio op Ubuntu 18.04

  3. PERIOD_ADD() Voorbeelden – MySQL

  4. Combineer twee kolommen en voeg toe aan één nieuwe kolom