sql >> Base de Datos >  >> RDS >> Oracle

ORA-30926:no se puede obtener un conjunto estable de filas en las tablas de origen al fusionar tablas

Es un caso un poco complicado. La razón principal es que parece tener duplicados en la columna TMP_DP_REGIAO.DS_PROTHEUS_CODE y MERGE intenta actualizar la misma fila de la tabla de destino varias veces. Pero si los valores nuevos y los valores antiguos en las columnas actualizadas son iguales, Oracle puede omitir este problema de duplicados:

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 

Pero si los valores antiguos y nuevos son diferentes, Oracle genera la excepción que obtiene:

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