Bagikan melalui


ALTER VIEW (Transact-SQL)

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse di Microsoft Fabric

Memodifikasi tampilan yang dibuat sebelumnya. Ini termasuk tampilan terindeks. ALTER VIEW tidak memengaruhi prosedur atau pemicu tersimpan dependen dan tidak mengubah izin.

Konvensi sintaks transact-SQL

Sintaks

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ] [ ; ]  
  
<view_attribute> ::=   
{   
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]       
}   
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
  
ALTER VIEW [ schema_name . ] view_name [  ( column_name [ ,...n ] ) ]   
AS <select_statement>   
[;]  

Argumen

schema_name
Adalah nama skema tempat tampilan berada.

view_name
Adalah tampilan yang akan diubah.

column
Adalah nama satu atau beberapa kolom, dipisahkan oleh koma, yang akan menjadi bagian dari tampilan yang ditentukan.

Penting

Izin kolom dipertahankan hanya ketika kolom memiliki nama yang sama sebelum dan sesudah ALTER VIEW dilakukan.

Catatan

Di kolom untuk tampilan, izin untuk nama kolom berlaku di seluruh pernyataan CREATE VIEW atau ALTER VIEW, terlepas dari sumber data yang mendasar. Misalnya, jika izin diberikan pada kolom SalesOrderID dalam pernyataan CREATE VIEW, pernyataan ALTER VIEW dapat mengganti nama kolom SalesOrderID , seperti ke OrderRef, dan masih memiliki izin yang terkait dengan tampilan menggunakan SalesOrderID.

ENKRIPSI
Berlaku untuk: SQL Server 2008 (10.0.x) dan yang lebih baru dan Azure SQL Database.

Mengenkripsi entri dalam sys.syscomments yang berisi teks pernyataan ALTER VIEW. DENGAN ENKRIPSI mencegah tampilan diterbitkan sebagai bagian dari replikasi SQL Server.

SCHEMABINDING
Mengikat tampilan ke skema tabel atau tabel yang mendasar. Ketika SCHEMABINDING ditentukan, tabel dasar tidak dapat dimodifikasi dengan cara yang akan memengaruhi definisi tampilan. Definisi tampilan itu sendiri harus terlebih dahulu dimodifikasi atau dihilangkan untuk menghapus dependensi pada tabel yang akan dimodifikasi. Saat Anda menggunakan SCHEMABINDING, select_statement harus menyertakan nama dua bagian (skema.objek) tabel, tampilan, atau fungsi yang ditentukan pengguna yang dirujuk. Semua objek yang dirujuk harus berada dalam database yang sama.

Tampilan atau tabel yang berpartisipasi dalam tampilan yang dibuat dengan klausa SCHEMABINDING tidak dapat dihilangkan, kecuali tampilan tersebut dihilangkan atau diubah sehingga tidak lagi memiliki pengikatan skema. Jika tidak, Mesin Database menimbulkan kesalahan. Selain itu, menjalankan pernyataan ALTER TABLE pada tabel yang berpartisipasi dalam tampilan yang memiliki pengikatan skema gagal jika pernyataan ini memengaruhi definisi tampilan.

VIEW_METADATA
Menentukan bahwa instans SQL Server akan kembali ke API DB-Library, ODBC, dan OLE DB informasi metadata tentang tampilan, alih-alih tabel dasar atau tabel, saat metadata mode penelusuran diminta untuk kueri yang mereferensikan tampilan. Metadata mode penelusuran adalah metadata tambahan yang dikembalikan instans Mesin Database ke API DB-Library, ODBC, dan OLE DB sisi klien. Metadata ini memungkinkan API sisi klien untuk menerapkan kursor sisi klien yang dapat diperbarui. Metadata mode penelusuran menyertakan informasi tentang tabel dasar tempat kolom dalam tataan hasil berada.

Untuk tampilan yang dibuat dengan VIEW_METADATA, metadata mode penelusuran mengembalikan nama tampilan dan bukan nama tabel dasar saat menjelaskan kolom dari tampilan dalam tataan hasil.

Saat tampilan dibuat dengan menggunakan WITH VIEW_METADATA, semua kolomnya, kecuali kolom tanda waktu, dapat diperbarui jika tampilan memiliki SISIPKAN atau PERBARUI ALIH-ALIH pemicu. Untuk informasi selengkapnya, lihat bagian Keterangan di CREATE VIEW (Transact-SQL).

AS
Apakah tindakan yang harus diambil oleh tampilan.

select_statement
Adalah pernyataan SELECT yang menentukan tampilan.

DENGAN OPSI CENTANG
Memaksa semua pernyataan modifikasi data yang dijalankan terhadap tampilan untuk mengikuti kriteria yang ditetapkan dalam select_statement.

Keterangan

Untuk informasi selengkapnya tentang ALTER VIEW, lihat Komentar di CREATE VIEW (Transact-SQL).

Catatan

Jika definisi tampilan sebelumnya dibuat dengan menggunakan WITH ENCRYPTION atau CHECK OPTION, opsi ini diaktifkan hanya jika disertakan dalam ALTER VIEW.

Jika tampilan yang saat ini digunakan dimodifikasi dengan menggunakan ALTER VIEW, Mesin Database mengambil kunci skema eksklusif pada tampilan. Saat kunci diberikan, dan tidak ada pengguna aktif tampilan, Mesin Database menghapus semua salinan tampilan dari cache prosedur. Paket yang ada yang mereferensikan tampilan tetap berada di cache tetapi dikompresi ulang saat dipanggil.

ALTER VIEW dapat diterapkan ke tampilan terindeks; namun, ALTER VIEW secara tidak bersyarat menghilangkan semua indeks pada tampilan.

Izin

Untuk menjalankan ALTER VIEW, minimal, diperlukan izin ALTER pada OBJECT.

Contoh

Contoh berikut membuat tampilan yang berisi semua karyawan dan tanggal sewa mereka yang disebut EmployeeHireDate. Izin diberikan ke tampilan, tetapi persyaratan diubah untuk memilih karyawan yang tanggal sewanya jatuh sebelum tanggal tertentu. Kemudian, ALTER VIEW digunakan untuk mengganti tampilan.

USE AdventureWorks2022;  
GO  
CREATE VIEW HumanResources.EmployeeHireDate  
AS  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS  p  
ON e.BusinessEntityID = p.BusinessEntityID ;  
GO  

Tampilan harus diubah untuk hanya menyertakan karyawan yang dipekerjakan sebelum 2002. Jika ALTER VIEW tidak digunakan, tetapi tampilan dihilangkan dan dibuat ulang, pernyataan GRANT yang digunakan sebelumnya dan pernyataan lain yang berkaitan dengan izin yang berkaitan dengan tampilan ini harus dimasukkan kembali.

ALTER VIEW HumanResources.EmployeeHireDate  
AS  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS p  
ON e.BusinessEntityID = p.BusinessEntityID  
WHERE HireDate < CONVERT(DATETIME,'20020101',101) ;  
GO  

Lihat Juga

BUAT TABEL (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Membuat Prosedur Tersimpan
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Membuat Perubahan Skema pada Database Publikasi