web-dev-qa-db-fra.com

Si je mets à jour une vue, mes tableaux d'origine seront-ils mis à jour

En théorie, j'ai deux tables Employé et Emplacements. De plus, j'ai une vue viewEmpLocation qui se fait en joignant Employé et Emplacements.

Si je mets à jour la vue, les données de la table d'origine seront-elles mises à jour?

31
Vaibhav Jain

voir tilisation des vues dans Microsoft SQL Server

Lors de la modification des données via une vue (c'est-à-dire à l'aide d'instructions INSERT ou UPDATE), certaines limitations existent en fonction du type de vue. Les vues qui accèdent à plusieurs tables ne peuvent modifier qu'une des tables de la vue. Les vues qui utilisent des fonctions, spécifient DISTINCT ou utilisent la clause GROUP BY peuvent ne pas être mises à jour. De plus, l'insertion de données est interdite pour les types de vues suivants:

* views having columns with derived (i.e., computed) data in the SELECT-list  
* views that do not contain all columns defined as NOT NULL from the tables from which they were defined

Il est également possible d'insérer ou de mettre à jour des données via une vue de sorte que les données ne soient plus accessibles via cette vue, sauf si l'option WITH CHECK OPTION a été spécifiée.

24
KM.

Oui.

Les données "dans" une vue n'ont pas d'existence indépendante des tables qui composent la vue. La vue est, par essence, une instruction SELECT stockée qui se fait passer pour une table. Les données sont stockées dans les tables d'origine et ne sont "assemblées" dans la vue que lorsque vous souhaitez les consulter. Si la vue peut être mise à jour (toutes les vues ne le sont pas), les mises à jour sont appliquées aux données de la table.

19
Larry Lustig

Vous pouvez utiliser un déclencheur sur la vue pour effectuer une insertion/mise à jour/suppression sur les tables réelles.

http://www.devarticles.com/c/a/SQL-Server/Using-Triggers-In-MS-SQL-Server/1/

4
Kyle J V