Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Премахнете SCHEMABINDING от изглед в SQL Server

Целта на обвързването на изглед със схема е да се гарантира, че базовите таблици, посочени в изгледа, не могат да бъдат модифицирани по начин, който би повлиял на дефиницията на изгледа.

Това обикновено е нещо добро. В крайна сметка не искате някой да дойде и да пусне маса, от която зависи вашето виждане, нали?

Но какво ще стане, ако трябва да направите промени в една или повече таблици, посочени от вашия изглед?

В този случай можете да премахнете обвързването на схема от изглед, да направите промените в основната таблица/и, след което да приложите повторно свързването на схемата.

Има два начина за премахване на свързването на схема от изглед:

  • Променете изгледа, така че дефиницията му вече да не посочва обвързването на схемата.
  • Изхвърлете изгледа (след това го създайте отново без обвързване на схема, ако е необходимо).

Пример за изглед, обвързан със схема

Първо, ето пример за изглед, обвързан със схема:

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, който предотвратява възникването на грешка в случай, че изгледът не съществува.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви са предимствата на VistaDB

  2. Как да замените всички появявания на низ с друг низ в SQL Server – REPLACE()

  3. Създайте функция с таблично значение в SQL Server

  4. Най-добрите подходи за текущи суми – актуализиран за SQL Server 2012

  5. SQL Server:Как да изберете всички дни в диапазон от време, дори ако няма данни за няколко дни