¿Cómo evitar el ORA-01779?
tema enviado por Arioco en ORACLE
tema iniciado el 19/02/2009
A ver que ideas se generan sobre el siguiente error:
Se requiere realizar un UPDATE sobre una tabla con el valor de otra tabla, a continuación la instrucción:
UPDATE (
SELECT est.vase_nu_estadillo AS valor,
evs.vase_nu_seccion AS porcentaje
FROM EstEstadillo est
INNER JOIN EstValorSeccion evs
ON (
evs.dni = est.dni
AND evs.tifi_co_tipofiscalia = est.tifi_co_tipofiscalia
AND evs.peri_fx_fiperiodo = est.peri_fx_fiperiodo
AND evs.peri_fx_ffperiodo = est.peri_fx_ffperiodo
AND evs.est_fx_fisubperiodo = est.est_fx_fisubperiodo
AND evs.est_fx_ffsubperiodo = est.est_fx_ffsubperiodo
AND evs.secc_co_seccion = 1
)
WHERE evs.vase_nu_seccion > 0
AND est.est_bo_mediafiscalia = 'Si'
AND est.peri_fx_fiperiodo = TO_DATE('01/01/2008', 'DD/MM/YYYY')
AND est.fisc_co_fiscalia = 3
)
SET valor = porcentaje
Obtengo el error
ORA-01779: no se puede modificar una columna que se corresponde con una tabla no reservada por clave
El problema es que ya no se que intentar (que no sea emplear el mal visto HINT que se salta la comprobación) ya que es COMPLETAMENTE seguro que los SEIS campos clave de EstEstadillo y los SIETE campos clave de EstValorSeccion están en el apartado ON del INNER JOIN... la ultima idea que se me ha ocurrido es que el optimizador de ORACLE no tome en cuenta la constante 1 del septimo campo clave de la tabla EstValorSeccion... en cuyo caso no tengo idea de que hacer ya que esa constante es ABSOLUTAMENTE necesaria.
Agradezco de antemano cualquier sugerencia