Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

ORA-30926:तालिका मर्ज करते समय स्रोत तालिकाओं में पंक्तियों का एक स्थिर सेट प्राप्त करने में असमर्थ

थोड़ा पेचीदा मामला है। प्राथमिक कारण यह है कि ऐसा लगता है कि आपके पास TMP_DP_REGIAO.DS_PROTHEUS_CODE कॉलम में डुप्लिकेट हैं और MERGE गंतव्य तालिका की एक ही पंक्ति को कई बार अपडेट करने का प्रयास करता है। लेकिन अगर अपडेट किए गए कॉलम में नए मान और पुराने मान समान हैं, तो Oracle डुप्लिकेट के इस मुद्दे को छोड़ सकता है:

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 

लेकिन अगर पुराने और नए मान अलग हैं, तो Oracle आपको मिलने वाले अपवाद को उठाता है:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ODP.net प्रबंधित बनाम अप्रबंधित ड्राइवर

  2. तालिका में एकाधिक बाधाएं:सभी उल्लंघन कैसे प्राप्त करें?

  3. मेमोरी प्रेशर एनालिसिस रिस्क स्टेट

  4. ORACLE में चयन कथन में डेटा प्रकार का फ़ील्ड प्राप्त करें

  5. संग्रह विधि:Oracle डाटाबेस में विस्तार प्रक्रिया