Une vue de la database est-elle modifiable?

Pouvez-vous mettre à jour une vue dans une database? Si c'est le cas, comment? Si non, pourquoi pas?

La réponse réelle est "ça dépend", il n'y a pas d'absolu.

Le critère de base est qu'il doit s'agir d'une vue pouvant être mise à jour du sharepoint vue du moteur de database , c'est-à-dire que le moteur peut identifier de manière unique la ou les lignes à mettre à jour. Si votre vue a un champ calculé ou représente le produit d'une jointure parent / enfant, la réponse par défaut est probablement non.

Cependant, il est également possible de sortingcher … dans MS SQL Server et Oracle (pour ne prendre que deux exemples), vous pouvez avoir des triggersurs qui se triggersnt lorsque vous essayez d'insert ou de mettre à jour une vue de sorte que le server ne pense pas peut être mis à jour en quelque chose qui est habituellement parce que vous savez que le server ne peut pas déduire facilement du schéma.

La bonne réponse est "ça dépend". Vous ne pouvez pas mettre à jour une colonne agrégée dans une vue, par exemple. Pour les vues Oracle, vous pouvez utiliser Google pour "vue de jointure modifiable" pour get des exemples de situations dans lesquelles vous ne pouvez pas mettre à jour une vue.

PostgreSQL a des règles pour créer des VIEWs pouvant être mises à jour. Vérifiez les exemples dans le manuel pour voir comment les utiliser.

Ps. Dans PostgreSQL, une vue est une règle, une règle de sélection.

Dans le passé, il n'était pas possible de mettre à jour les vues. Le but principal d'une vue est de regarder les données, d'où le nom. Il pourrait également avoir été appelé une requête stockée .

Aujourd'hui, de nombreux moteurs de bases de données prennent en charge la mise à jour des vues. Il est lié à des ressortingctions, certaines mises à jour sont pratiquement impossibles (par exemple colonnes calculées, groupe par etc).

Il y a deux approches:

  1. Au lieu de triggersr, qui décale fondamentalement le problème à l'user. Vous écrivez un code de procédure qui fait le travail. Certes, aucune garantie n'est donnée sur l'exactitude, la cohérence, etc. Du sharepoint vue du moteur SGBDR, un triggersur qui supprime tout des tables de base, quelle que soit la mise à jour effectuée dans la vue, est parfaitement correct.

  2. Beaucoup plus ambitieux sont les mises à jour des vues traitées exclusivement par le moteur RDBMS. Pas grand progrès est fait ici: pour le less, si vous avez quelques bonnes idées là-bas, alors vous pouvez déployer une thèse de doctorat. En pratique, votre SGBDR favori peut permettre certaines mises à jour limitatives de l'affichage des annonces publicitaires; consultez le manuel 🙂

Oui vous pouvez, mais regardez CREATE VIEW (Transact-SQL) et voir la section Vues pouvant être mises à jour

http://msdn.microsoft.com/en-us/library/ms187956.aspx

Voir Remarques \ vue pouvant être mise à jour

Oui, ils sont – la syntaxe est la même que la mise à jour d'une table

 Update MyView Set Col1 = "Testing" Where Col2 = 3 Go 

Il y a quelques conditions pour créer une vue qui peut être mise à jour. Ils peuvent être trouvés ici

MODIFIER:

Je dois append que c'est basé sur MS SQL

Lorsqu'une vue est créée dans SQL Server, les métadonnées des colonnes de la table référencée (nom de colonne et position ordinale) sont conservées dans la database. Toute modification apscope aux tables de base référencées (réorganisation des colonnes, ajout d'une nouvelle colonne, etc.) ne sera pas répercutée dans la vue tant que la vue ne sera pas:

• Modifié avec une instruction ALTER VIEW • Recréé avec les instructions DROP VIEW / CREATE VIEW • Actualisé à l'aide de la procédure stockée système sp_refreshview

Oui, ils sont modifiables mais pas toujours. Les vues peuvent être mises à jour ci-dessous.

-Si la vue est constituée de la key primaire de la table en fonction de laquelle la vue a été créée.

-Si la vue est définie en fonction d'une et d'une seule table.

-Si la vue n'a pas été définie à l'aide de groupes et de fonctions d'agrégation.

-Si la vue n'a pas de clause distincte dans sa définition.

-Si la vue supposée être mise à jour est basée sur une autre vue, la dernière doit être modifiable.

-Si la définition de la vue n'a pas de sous-requêtes.

Oui, en utilisant un triggersur INSTEAD OF .