Archive for 19. March 2009

ORA-01445: cannot select ROWID from a join view without a key-preserved table

Buenas Francisco, que bueno que haya gente que hable de oracle en español/castellano. Hay pocos… Al grano:

ORA-01445: cannot select ROWID from a join view without a key-preserved.
Un error que da por varias circustancias, algunas claramente justificadas y otras que se hacen difícil de entender.
Según lo que estuve viendo: una de las razones es que hay una limitación en la cantidad de joins que está en varias versiones (máximo aparentemente unos 20 o 22), otra es la cantidad de joins a través del mismo campo (máximo aparentemente 6). Y por supuesto el error tal cual la descripción.
El tema es que a mi me parece que me ocurre otra cosa.
Tengo dos servidores similares, misma versión de SO y de BBDD (Oracle 10.2) instalados se supone que de la misma manera con el mismo producto. Y en uno me funcionan consultas que en el otro no. La situación sule ser la siguiente:

Select a.campo, b.campo, X.campo from A
inner join B on a.campo1=b.cmapo1
inner join (select campo1, campo from H)  X on a.campo1=X.camapo1

Básicamente es así y en un equipo funciona y en el otro me da el error en cuestión. Tienes alguna idea por qué?… si logro sacar la subconsultafueralo soluciono pero realmente es un trabajo muy largo para pasar todo al nuevo equipo y que funcione, y también peligroso…

Te agradezco de antemano Francisco,

Fede

|