sql >> Database teknologi >  >> RDS >> Sqlserver

Fjern SCHEMABINDING fra en visning i SQL Server

Formålet med skemabinding af en visning er at sikre, at de basistabeller, der refereres til i visningen, ikke kan ændres på en måde, der ville påvirke visningsdefinitionen.

Dette er normalt en god ting. Når alt kommer til alt, vil du ikke have, at nogen kommer og taber et bord, som dit syn afhænger af, gør du?

Men hvad hvis du har brug for at foretage ændringer i en eller flere tabeller, som din visning refererer til?

I dette tilfælde kan du fjerne skemabinding fra en visning, foretage ændringerne i basistabellerne og derefter genanvende skemabinding.

Der er to måder at fjerne skemabinding fra en visning:

  • Rediger visningen, så dens definition ikke længere specificerer skemabinding.
  • Slip visningen (så genskab den uden skemabinding, hvis det er nødvendigt).

Eksempel på en skemabundet visning

For det første er her et eksempel på en skemabundet visning:

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

Vi ved, at det er en skemabundet visning, fordi den indeholder WITH SCHEMABINDING i sin definition. For at fjerne skemabinding er alt, hvad vi skal gøre, at fjerne den bit.

Mulighed 1 – Skift visningen

For at fjerne skemabinding fra denne visning ved at ændre den, kan vi bruge følgende kode:

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

Det eneste, vi gjorde, var at ændre CREATE til ALTER , og fjern WITH SCHEMABINDING .

Mulighed 2 – Slip visningen

Her er et eksempel på at droppe visningen og derefter genskabe den uden skemabinding:

DROP VIEW IF EXISTS dbo.v_Cats;
GO

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

I dette tilfælde brugte jeg DROP IF EXISTS-syntaksen, som forhindrer en fejl i at opstå i tilfælde af, at visningen ikke eksisterer.


  1. Android:Sqlite-fejl - (1) nær null:syntaksfejl

  2. Hvordan forbindes i java som SYS til Oracle?

  3. Hvordan opretter man tabel i Oracle SQL Developer?

  4. Sådan installeres SQLOPS på en Mac