Účelem vazby schématu na pohled je zajistit, že základní tabulky odkazované v pohledu nelze upravit způsobem, který by ovlivnil definici pohledu.
To je obvykle dobrá věc. Koneckonců nechcete, aby někdo přišel a shodil stůl, na kterém závisí váš pohled, že?
Co když ale potřebujete provést změny v jedné nebo více tabulkách, na které odkazuje váš pohled?
V tomto případě můžete z pohledu odebrat vazbu schématu, provést změny v základní tabulce/tabulkách a poté znovu použít vazbu schématu.
Existují dva způsoby, jak odebrat vazbu schématu z pohledu:
- Změňte zobrazení tak, aby jeho definice již neurčovala vazbu schématu.
- Zrušte zobrazení (poté jej v případě potřeby znovu vytvořte bez vazby schématu).
Příklad zobrazení vázaného na schéma
Nejprve je zde příklad zobrazení vázaného na schéma:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Víme, že jde o zobrazení vázané na schéma, protože obsahuje WITH SCHEMABINDING
ve své definici. Chcete-li odstranit vazbu schématu, vše, co musíme udělat, je odstranit tento bit.
Možnost 1 – Změnit zobrazení
K odstranění vazby schématu z tohoto zobrazení jeho změnou můžeme použít následující kód:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Vše, co jsme udělali, bylo změnit CREATE
na ALTER
a odstraňte WITH SCHEMABINDING
.
Možnost 2 – Pusťte zobrazení
Zde je příklad zrušení zobrazení a jeho opětovného vytvoření bez vazby schématu:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
V tomto případě jsem použil syntaxi DROP IF EXISTS, která zabraňuje výskytu chyby v případě, že pohled neexistuje.