Geralmente, é uma boa ideia vincular suas exibições em esquema no SQL Server.
A vinculação de esquema à sua visualização garantirá que as tabelas subjacentes não possam ser alteradas de uma maneira que afete a visualização. Sem vinculação de esquema, as tabelas subjacentes ou outros objetos podem ser modificados ou até mesmo excluídos. Se isso acontecer, a exibição não funcionará mais conforme o esperado.
Para criar uma visualização vinculada ao esquema, use o
WITH SCHEMABINDING
em seu código T-SQL para criar a exibição. Exemplo
Aqui está um exemplo de criação de uma visualização vinculada ao esquema:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO
Observe que usei o nome de duas partes ao fazer referência à tabela em minha consulta – usei
dbo.Cats
em vez de apenas Cats
. Fazer isso é um requisito para o esquema vincular um objeto. Se você tentar vincular um objeto ao esquema sem usar nomes de duas partes, receberá um erro. Agora que vinculei minha visão ao esquema, se eu tentar descartar a tabela referenciada em sua definição, recebo um erro:
DROP TABLE Cats;
Resultado:
Msg 3729, Level 16, State 1, Line 1 Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.
Aqui está o que acontece se eu tentar vincular o esquema à exibição sem usar nomenclatura de duas partes:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING AS SELECT CatId, CatName, Phone FROM Cats; GO
Resultado:
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.
Outros atributos de visualização
Vários atributos podem ser separados por uma vírgula. Você não precisa especificar
WITH
para cada atributo. Por exemplo, se você quiser que a visualização seja vinculada ao esquema e criptografado, você pode fazer isso:
CREATE VIEW dbo.v_Cats WITH SCHEMABINDING, ENCRYPTION AS SELECT CatId, CatName, Phone FROM dbo.Cats; GO