Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mise à jour d'une vue de jointure sans obtenir d'erreur de clé non conservée

Vous ne pouvez pas mettre à jour column_from_table2 dans cette vue, elle n'est pas modifiable.
Pour vérifier si une colonne est modifiable ou non, exécutez cette requête :

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   

Pourquoi n'est-il pas actualisable ? C'est une grande question.
Il y a tout un chapitre dans la documentation sur ce sujet :
http://docs.oracle.com/cd/B28359_01/server.111/b28310/views001.htm#i1006234
trouver "Mise à jour des vues qui impliquent des jointures externes", il y a un exemple de vue avec une jointure externe et une explication détaillée des colonnes de cette vue qui peuvent et ne peuvent pas être mises à jour et pourquoi.