Обикновено е добра идея да обвържете изгледите си със схема в 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