Dans Oracle, est-il possible d'insérer ou de mettre à jour un enregistrement (une ligne) via une vue?
Les vues dans Oracle peuvent être mises à jour dans des conditions spécifiques. Cela peut être délicat et généralement n'est pas conseillé.
À partir de Oracle 10g SQL Reference :
Remarques sur les vues pouvant être mises à jour
Une vue pouvant être mise à jour est celle que vous pouvez utiliser pour insérer, mettre à jour ou supprimer des lignes de table de base. Vous pouvez créer une vue qui peut être mise à jour de manière inhérente, ou vous pouvez créer un déclencheur INSTEAD OF sur n'importe quelle vue pour la mettre à jour.
Pour savoir si et de quelle manière les colonnes d'une vue intrinsèquement modifiable peuvent être modifiées, interrogez la vue du dictionnaire de données USER_UPDATABLE_COLUMNS. Les informations affichées par cette vue n'ont de sens que pour les vues intrinsèquement modifiables. Pour qu'une vue puisse être mise à jour de manière inhérente, les conditions suivantes doivent être remplies:
En outre, si une vue intrinsèquement modifiable contient des pseudocolonnes ou des expressions, vous ne pouvez pas mettre à jour les lignes de la table de base avec une instruction UPDATE qui fait référence à l'une de ces pseudocolonnes ou expressions.
Si vous souhaitez qu'une vue de jointure puisse être mise à jour, toutes les conditions suivantes doivent être remplies:
Oracle a deux façons différentes de rendre les vues modifiables: -
Je resterais à l'écart des déclencheurs plutôt que de récupérer votre code pour mettre à jour les tables sous-jacentes directement plutôt que via la vue.
Il y a deux fois où vous pouvez mettre à jour un enregistrement via une vue:
En règle générale, vous ne devez pas compter sur la possibilité d'effectuer une insertion dans une vue à moins d'avoir spécifiquement écrit un déclencheur INSTEAD OF pour celle-ci. Sachez qu'il existe également des déclencheurs INSTEAD OF UPDATE qui peuvent également être écrits pour faciliter les mises à jour.
OUI , vous pouvez mettre à jour et insérer dans la vue et cette modification sera reflétée sur le tableau d'origine ....
MAIS
1-la vue doit avoir toutes les valeurs NOT NULL sur la table
2-la mise à jour doit avoir la mêmes règles que le tablea ... "mise à jour de la clé primaire liée à une autre clé étrangère .. etc" ...