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

Actualización de una vista de combinación sin obtener un error de clave no conservada

No puede actualizar column_from_table2 en esta vista, no es actualizable.
Para verificar si alguna columna es actualizable o no, ejecute esta consulta:

SELECT * FROM USER_UPDATABLE_COLUMNS
WHERE table_name = 'MY_DATAVIEW';

OWNER                          TABLE_NAME                     COLUMN_NAME                    UPDATABLE INSERTABLE DELETABLE
------------------------------ ------------------------------ ------------------------------ --------- ---------- ---------
TEST                           MY_DATAVIEW                    KEY1                           YES       YES        YES       
TEST                           MY_DATAVIEW                    KEY2                           YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE1             YES       YES        YES       
TEST                           MY_DATAVIEW                    COLUMN_FROM_TABLE2             NO        NO         NO   

¿Por qué no es actualizable? Es una gran pregunta.
Hay un capítulo completo en la documentación sobre este tema:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006234
busque "Actualización de vistas que involucran uniones externas", hay un ejemplo de una vista con uniones externas y una explicación detallada de qué columnas en esta vista pueden y no pueden actualizarse y por qué.