Целта на обвързването на изглед със схема е да се гарантира, че базовите таблици, посочени в изгледа, не могат да бъдат модифицирани по начин, който би повлиял на дефиницията на изгледа.
Това обикновено е нещо добро. В крайна сметка не искате някой да дойде и да пусне маса, от която зависи вашето виждане, нали?
Но какво ще стане, ако трябва да направите промени в една или повече таблици, посочени от вашия изглед?
В този случай можете да премахнете обвързването на схема от изглед, да направите промените в основната таблица/и, след което да приложите повторно свързването на схемата.
Има два начина за премахване на свързването на схема от изглед:
- Променете изгледа, така че дефиницията му вече да не посочва обвързването на схемата.
- Изхвърлете изгледа (след това го създайте отново без обвързване на схема, ако е необходимо).
Пример за изглед, обвързан със схема
Първо, ето пример за изглед, обвързан със схема:
CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
SELECT
CatId,
CatName,
Phone
FROM dbo.Cats;
GO
Знаем, че това е изглед, свързан със схема, защото съдържа WITH SCHEMABINDING в нейното определение. За да премахнем свързването на схемата, всичко, което трябва да направим, е да премахнем този бит.
Опция 1 – Промяна на изгледа
За да премахнем обвързването на схемата от този изглед, като го променим, можем да използваме следния код:
ALTER VIEW dbo.v_Cats
AS
SELECT
CatId,
CatName,
Phone
FROM dbo.Cats;
GO
Всичко, което направихме, беше да променим CREATE към ALTER и премахнете WITH SCHEMABINDING .
Опция 2 – Пуснете изгледа
Ето пример за отпадане на изгледа, след което повторното му създаване без обвързване на схема:
DROP VIEW IF EXISTS dbo.v_Cats;
GO
CREATE VIEW dbo.v_Cats
AS
SELECT
CatId,
CatName,
Phone
FROM dbo.Cats;
GO
В този случай използвах синтаксиса DROP IF EXISTS, който предотвратява възникването на грешка в случай, че изгледът не съществува.