sql >> Databasteknik >  >> RDS >> Oracle

ORA-30926:kan inte få en stabil uppsättning rader i källtabellerna när tabeller slås samman

Det är ett lite knepigt fall. Det primära skälet är att du verkar ha dubbletter i kolumnen TMP_DP_REGIAO.DS_PROTHEUS_CODE och MERGE försöker uppdatera samma rad i destinationstabellen flera gånger. Men om nya värden och gamla värden i uppdaterade kolumner är desamma kan Oracle hoppa över det här problemet med dubbletter:

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 

Men om gamla och nya värden är olika höjer Oracle undantaget du får:

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. Deklarera användardefinierat undantag med metoden RAISE_APPLICATION_ERROR i Oracle Database

  2. Hur infogar man en kolumn i en specifik position i oracle utan att tappa och återskapa tabellen?

  3. Trigger i SQL

  4. Fråga timeout i pg-promise