Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създайте обвързан изглед към схема в SQL Server

Обикновено е добра идея да обвържете изгледите си със схема в SQL Server.

Схемата, която обвързва вашия изглед, ще гарантира, че основните таблици не могат да бъдат променени по начин, който би повлиял на изгледа. Без обвързване на схемата, основните таблици или други обекти могат да бъдат модифицирани или дори изтрити. Ако това се случи, изгледът вече няма да работи според очакванията.

За да създадете изглед, обвързан със схема, използвайте WITH SCHEMABINDING във вашия T-SQL код за създаване на изгледа.

Пример

Ето пример за създаване на обвързан със схема изглед:

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

Забележете, че използвах името от две части при препратка към таблицата в заявката си – използвах dbo.Cats вместо просто Cats . Правенето на това е изискване за свързване на обект със схема. Ако се опитате да обвържете обект със схема, без да използвате имена от две части, ще получите грешка.

Сега, когато схемата обвърза изгледа си, ако се опитам да пусна таблицата, посочена в нейната дефиниция, получавам грешка:

DROP TABLE Cats;

Резултат:

Msg 3729, Level 16, State 1, Line 1
Cannot DROP TABLE 'Cats' because it is being referenced by object 'v_Cats'.

Ето какво се случва, ако се опитам да обвържа схематично изгледа, без да използвам именуване от две части:

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

Резултат:

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.

Други атрибути на изглед

Няколко атрибута могат да бъдат разделени със запетая. Не е необходимо да посочвате WITH за всеки атрибут.

Например, ако искате изгледът да бъде обвързан със схема и криптиран, можете да направите това:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SIGN() Примери в SQL Server

  2. Как да конвертирате стойностите на редовете в колони с динамичен брой колони?

  3. Променете разделителя на запетая, когато изпращате по имейл резултати от заявка в SQL Server (T-SQL)

  4. Инсталиране на екземпляр на клъстер за отказване на SQL Server – част 1

  5. Как да създадете функция на SQL Server, за да обедините множество редове от подзаявка в едно ограничено поле?