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.