Целта на обвързването на изглед със схема е да се гарантира, че базовите таблици, посочени в изгледа, не могат да бъдат модифицирани по начин, който би повлиял на дефиницията на изгледа.
Това обикновено е нещо добро. В крайна сметка не искате някой да дойде и да пусне маса, от която зависи вашето виждане, нали?
Но какво ще стане, ако трябва да направите промени в една или повече таблици, посочени от вашия изглед?
В този случай можете да премахнете обвързването на схема от изглед, да направите промените в основната таблица/и, след което да приложите повторно свързването на схемата.
Има два начина за премахване на свързването на схема от изглед:
- Променете изгледа, така че дефиницията му вече да не посочва обвързването на схемата.
- Изхвърлете изгледа (след това го създайте отново без обвързване на схема, ако е необходимо).
Пример за изглед, обвързан със схема
Първо, ето пример за изглед, обвързан със схема:
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, който предотвратява възникването на грешка в случай, че изгледът не съществува.