Vues modifiables
Une vue peut être mise à jour ou en lecture seule.Si une vue peut être mise à jour, les données auxquelles elle donne accès peuvent être modifiées à l’aide des opérateurs DML INSERT, UPDATE, DELETE, UPDATE OR INSERT, MERGE.Les modifications effectuées sur la vue sont appliquées à la ou aux tables sous-jacentes.
Une vue en lecture seule peut être mise à jour à l’aide de déclencheurs auxiliaires.Une fois qu’un ou plusieurs déclencheurs sont définis sur une vue, les changements ne sont pas automatiquement propagés à la table de base, même si la vue pouvait être mise à jour auparavant.Dans ce cas, la responsabilité de la mise à jour (suppression ou insertion) des entrées de la table de base incombe au programmeur qui a défini les triggers.
Les conditions suivantes doivent être remplies pour qu’une vue puisse être mise à jour :
-
L’instruction de sélection
SELECTn’accède qu’à une seule table ou une seule vue qui peut être modifiée ; -
L’instruction de sélection
SELECTne doit pas accéder aux procédures stockées ; -
Toutes les colonnes de la table de base ou de la vue actualisable qui ne sont pas présentes dans une vue donnée doivent satisfaire à l’une des conditions suivantes
-
autoriser la valeur "NULL
-
Les colonnes
NOT NULLdoivent avoir une valeur par défaut. -
Les colonnes
NOT NULLdoivent être initialisées dans les triggers de la table de base.
-
-
L’instruction de sélection
SELECTne contient pas de champs définis par des sous-requêtes ou d’autres expressions ; -
L’instruction de sélection
SELECTne contient pas les champs définis par les fonctions d’agrégation (MIN,MAX,AVG,COUNT,LIST), les fonctions statistiques (CORR,COVAR_POP,COVAR_SAMPetc.), les fonctions de régression linéaire (REGR_AVGX,REGR_AVGYetc.) et toutes sortes de fonctions de fenêtre ; -
L’instruction de sélection
SELECTne contient pas de phrasesORDER BY,GROUP BY,HAVING; -
L’instruction de sélection
SELECTne contient pas le mot-cléDISTINCTet les restrictions sur le nombre de lignes utilisantROWS,FIRST/SKIP,OFFSET/FETCH.