C'est généralement une bonne idée de lier au schéma vos vues dans SQL Server.
La liaison de schéma à votre vue garantira que les tables sous-jacentes ne peuvent pas être modifiées d'une manière qui affecterait la vue. Sans liaison de schéma, les tables sous-jacentes ou d'autres objets pourraient être modifiés ou même supprimés. Si cela se produit, la vue ne fonctionnera plus comme prévu.
Pour créer une vue liée au schéma, utilisez le WITH SCHEMABINDING
dans votre code T-SQL pour créer la vue.
Exemple
Voici un exemple de création d'une vue liée au schéma :
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Remarquez que j'ai utilisé le nom en deux parties lors du référencement de la table dans ma requête - j'ai utilisé dbo.Cats
au lieu de simplement Cats
. Cela est une exigence pour le schéma de liaison d'un objet. Si vous essayez de lier un objet au schéma sans utiliser de noms en deux parties, vous obtiendrez une erreur.
Maintenant que j'ai lié ma vue au schéma, si j'essaie de supprimer la table référencée dans sa définition, j'obtiens une erreur :
DROP TABLE Cats;
Résultat :
Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
Voici ce qui se passe si j'essaie de lier le schéma à la vue sans utiliser de nommage en deux parties :
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM Cats; GO
Résultat :
Msg 4512, Level 16, State 3, Procedure v_Cats, Line 5 Cannot schema bind view 'dbo.v_Cats' because name 'Cats' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
Autres attributs de vue
Plusieurs attributs peuvent être séparés par une virgule. Vous n'avez pas besoin de spécifier WITH
pour chaque attribut.
Par exemple, si vous voulez que la vue soit liée au schéma et crypté, vous pouvez le faire :
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING, ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO