Celem schematu wiążącego widok jest zapewnienie, że tabele podstawowe, do których odwołuje się widok, nie mogą być modyfikowane w sposób, który miałby wpływ na definicję widoku.
To zwykle dobra rzecz. W końcu nie chcesz, żeby ktoś przyszedł i upuścił stół, od którego zależy Twój pogląd, prawda?
Ale co, jeśli musisz wprowadzić zmiany w jednej lub kilku tabelach, do których odwołuje się Twój widok?
W takim przypadku możesz usunąć powiązanie schematu z widoku, wprowadzić zmiany w tabelach bazowych, a następnie ponownie zastosować powiązanie schematu.
Istnieją dwa sposoby na usunięcie powiązania schematu z widoku:
- Zmień widok, aby jego definicja nie określała już powiązania schematu.
- Upuść widok (a następnie utwórz go ponownie bez wiązania schematu, jeśli jest to wymagane).
Przykład widoku związanego ze schematem
Oto przykład widoku powiązanego ze schematem:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Wiemy, że jest to widok powiązany ze schematem, ponieważ zawiera WITH SCHEMABINDING
w swojej definicji. Aby usunąć powiązanie schematu, wszystko, co musimy zrobić, to usunąć ten bit.
Opcja 1 – Zmień widok
Aby usunąć powiązanie schematu z tego widoku, zmieniając je, możemy użyć następującego kodu:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Zmieniliśmy tylko CREATE
na ALTER
i usuń WITH SCHEMABINDING
.
Opcja 2 – Porzuć widok
Oto przykład upuszczania widoku, a następnie ponownego tworzenia go bez wiązania schematu:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
W tym przypadku użyłem składni DROP IF EXISTS, która zapobiega wystąpieniu błędu w przypadku, gdy widok nie istnieje.