Obvykle je dobrý nápad svázat schémata vaše pohledy na SQL Server.
Vazba schématu vašeho pohledu zajistí, že podkladové tabulky nebude možné změnit způsobem, který by ovlivnil pohled. Bez vazby schématu by mohly být základní tabulky nebo jiné objekty upraveny nebo dokonce odstraněny. Pokud k tomu dojde, zobrazení již nebude fungovat podle očekávání.
Chcete-li vytvořit pohled vázaný na schéma, použijte WITH SCHEMABINDING
ve vašem T-SQL kódu pro vytvoření pohledu.
Příklad
Zde je příklad vytvoření pohledu vázaného na schéma:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Všimněte si, že při odkazování na tabulku v dotazu jsem použil dvoudílný název – použil jsem dbo.Cats
místo pouze Cats
. Toto je požadavek pro vazbu schématu na objekt. Pokud se pokusíte svázat objekt do schématu bez použití dvoudílných názvů, dostanete chybu.
Nyní, když jsem svůj pohled svázal schématem, pokud se pokusím zrušit tabulku, na kterou se odkazuje v její definici, zobrazí se chyba:
DROP TABLE Cats;
Výsledek:
Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
Zde je to, co se stane, když se pokusím svázat zobrazení se schématem bez použití dvoudílného pojmenování:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM Cats; GO
Výsledek:
Msg 4512, Level 16, State 3, Procedure v_Cats, Line 5 Cannot schema bind view 'dbo.v_Cats' because name 'Cats' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
Další atributy zobrazení
Více atributů lze oddělit čárkou. Nemusíte zadávat WITH
pro každý atribut.
Pokud například chcete, aby byl pohled vázaný na schéma a šifrované, můžete provést toto:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING, ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO