Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Buat Tampilan Terikat Skema di SQL Server

Biasanya ide yang baik untuk mengikat skema pandangan Anda di SQL Server.

Skema yang mengikat tampilan Anda akan memastikan bahwa tabel yang mendasarinya tidak dapat diubah dengan cara yang akan memengaruhi tampilan. Tanpa pengikatan skema, tabel yang mendasari atau objek lain dapat dimodifikasi atau bahkan dihapus. Jika itu terjadi, tampilan tidak akan berfungsi seperti yang diharapkan.

Untuk membuat tampilan terikat skema, gunakan WITH SCHEMABINDING dalam kode T-SQL Anda untuk membuat tampilan.

Contoh

Berikut ini contoh pembuatan tampilan terikat skema:

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

Perhatikan saya menggunakan nama dua bagian saat mereferensikan tabel dalam kueri saya – saya menggunakan dbo.Cats bukan hanya Cats . Melakukan ini adalah persyaratan untuk skema yang mengikat objek. Jika Anda mencoba untuk mengikat skema objek tanpa menggunakan nama dua bagian, Anda akan mendapatkan kesalahan.

Sekarang saya memiliki skema yang mengikat pandangan saya, jika saya mencoba untuk menjatuhkan tabel yang dirujuk dalam definisinya, saya mendapatkan kesalahan:

DROP TABLE Cats;

Hasil:

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

Inilah yang terjadi jika saya mencoba untuk mengikat skema tampilan tanpa menggunakan penamaan dua bagian:

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

Hasil:

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.

Atribut Tampilan Lainnya

Beberapa atribut dapat dipisahkan dengan koma. Anda tidak perlu menentukan WITH untuk setiap atribut.

Misalnya, jika Anda ingin tampilan terikat skema dan terenkripsi, Anda dapat melakukan ini:

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. Cara Membagi Jendela Kueri di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 13

  2. Daftar Operator Perbandingan SQL Server

  3. Kapan SQL Server Mengurutkan Mundur?

  4. Bagaimana FOR XML PATH('') bekerja saat menggabungkan baris

  5. Apakah ada cara untuk mendapatkan daftar semua tabel sementara saat ini di SQL Server?