Oracle
 sql >> Database >  >> RDS >> Oracle

Aggiornamento di una vista join senza ottenere un errore di conservazione della chiave non

Non puoi aggiornare column_from_table2 in questa visualizzazione, non è aggiornabile.
Per verificare se alcune colonne sono aggiornabili o meno, esegui questa query:

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   

Perché non è aggiornabile? È una grande domanda.
C'è un intero capitolo nella documentazione su questo argomento:
http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006234
trova "Aggiornamento di viste che coinvolgono i join esterni", c'è un esempio di una vista con un join esterno e una spiegazione dettagliata quali colonne in questa vista possono e non possono essere aggiornate e perché.