Het doel van schemabinding aan een weergave is om ervoor te zorgen dat de basistabellen waarnaar in de weergave wordt verwezen niet kunnen worden gewijzigd op een manier die de weergavedefinitie zou beïnvloeden.
Dit is normaal gesproken een goede zaak. U wilt tenslotte niet dat iemand langskomt en een tafel laat vallen waarvan uw mening afhangt, toch?
Maar wat als u wijzigingen moet aanbrengen in een of meer tabellen waarnaar in uw weergave wordt verwezen?
In dit geval kunt u schemabinding uit een weergave verwijderen, de wijzigingen aanbrengen in de basistabel(len) en vervolgens schemabinding opnieuw toepassen.
Er zijn twee manieren om schemabinding uit een weergave te verwijderen:
- Wijzig de weergave zodat de definitie niet langer schemabinding specificeert.
- Sla de weergave neer (maak deze indien nodig opnieuw zonder schemabinding).
Voorbeeld van een schemagebonden weergave
Hier is eerst een voorbeeld van een schemagebonden weergave:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
We weten dat het een schemagebonden weergave is omdat het WITH SCHEMABINDING
. bevat in zijn definitie. Om schemabinding te verwijderen, hoeven we alleen dat bit te verwijderen.
Optie 1 – Verander de weergave
Om schemabinding uit deze weergave te verwijderen door deze te wijzigen, kunnen we de volgende code gebruiken:
ALTER VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Het enige wat we deden was CREATE
veranderen naar ALTER
, en verwijder WITH SCHEMABINDING
.
Optie 2 – De weergave laten vallen
Hier is een voorbeeld van het verwijderen van de weergave en deze vervolgens opnieuw te maken zonder schemabinding:
DROP VIEW IF EXISTS dbo.v_Cats; GO CREATE VIEW dbo.v_Cats AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
In dit geval heb ik de DROP IF EXISTS-syntaxis gebruikt, die voorkomt dat er een fout optreedt als de weergave niet bestaat.