sql >> Databasteknik >  >> RDS >> Sqlserver

Ta bort SCHEMABINDING från en vy i SQL Server

Syftet med att schemabinda en vy är att säkerställa att bastabellerna som refereras till i vyn inte kan ändras på ett sätt som skulle påverka vyns definition.

Detta är normalt en bra sak. När allt kommer omkring, vill du inte att någon kommer och släpper ett bord som din syn beror på, eller hur?

Men vad händer om du behöver göra ändringar i en eller flera tabeller som din vy refererar till?

I det här fallet kan du ta bort schemabindning från en vy, göra ändringarna i bastabellen/-erna och sedan tillämpa schemabindning igen.

Det finns två sätt att ta bort schemabindning från en vy:

  • Ändra vyn så att dess definition inte längre anger schemabindning.
  • Släpp vyn (återskapa den sedan utan schemabindning om det behövs).

Exempel på en schemabunden vy

Först, här är ett exempel på en schemabunden vy:

CREATE VIEW dbo.v_Cats
WITH SCHEMABINDING
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

Vi vet att det är en schemabunden vy eftersom den innehåller WITH SCHEMABINDING i sin definition. För att ta bort schemabindning behöver vi bara ta bort den biten.

Alternativ 1 – Ändra vyn

För att ta bort schemabindning från den här vyn genom att ändra den kan vi använda följande kod:

ALTER VIEW dbo.v_Cats
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

Allt vi gjorde var att ändra CREATE till ALTER , och ta bort WITH SCHEMABINDING .

Alternativ 2 – Släpp vyn

Här är ett exempel på att ta bort vyn och sedan återskapa den utan schemabindning:

DROP VIEW IF EXISTS dbo.v_Cats;
GO

CREATE VIEW dbo.v_Cats
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

I det här fallet använde jag syntaxen DROP IF EXISTS, som förhindrar att ett fel uppstår om vyn inte existerar.


  1. Vad är PostgreSQL-motsvarigheten för ISNULL()

  2. Hur man släpper bordet i oracle

  3. Hur man lägger till en DEFAULT-begränsning till en befintlig kolumn i SQL Server

  4. Lär dig hur du använder SQL Server Management Studio