Обикновено е добра идея да обвържете изгледите си със схема в SQL Server.
Схемата, която обвързва вашия изглед, ще гарантира, че основните таблици не могат да бъдат променени по начин, който би повлиял на изгледа. Без обвързване на схемата, основните таблици или други обекти могат да бъдат модифицирани или дори изтрити. Ако това се случи, изгледът вече няма да работи според очакванията.
За да създадете изглед, обвързан със схема, използвайте WITH SCHEMABINDING
във вашия T-SQL код за създаване на изгледа.
Пример
Ето пример за създаване на обвързан със схема изглед:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Забележете, че използвах името от две части при препратка към таблицата в заявката си – използвах dbo.Cats
вместо просто Cats
. Правенето на това е изискване за свързване на обект със схема. Ако се опитате да обвържете обект със схема, без да използвате имена от две части, ще получите грешка.
Сега, когато схемата обвърза изгледа си, ако се опитам да пусна таблицата, посочена в нейната дефиниция, получавам грешка:
DROP TABLE Cats;
Резултат:
Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
Ето какво се случва, ако се опитам да обвържа схематично изгледа, без да използвам именуване от две части:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM Cats; GO
Резултат:
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.
Други атрибути на изглед
Няколко атрибута могат да бъдат разделени със запетая. Не е необходимо да посочвате WITH
за всеки атрибут.
Например, ако искате изгледът да бъде обвързан със схема и криптиран, можете да направите това:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING, ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO