Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xóa SCHEMABINDING khỏi dạng xem trong SQL Server

Mục đích của lược đồ ràng buộc một dạng xem là để đảm bảo rằng các bảng cơ sở được tham chiếu trong dạng xem không thể được sửa đổi theo cách có thể ảnh hưởng đến định nghĩa dạng xem.

Đây bình thường là một điều tốt. Rốt cuộc, bạn không muốn ai đó đi cùng và bỏ rơi một chiếc bàn mà tầm nhìn của bạn phụ thuộc vào, phải không?

Nhưng điều gì sẽ xảy ra nếu bạn cần thực hiện thay đổi đối với một hoặc nhiều bảng mà chế độ xem của bạn tham chiếu?

Trong trường hợp này, bạn có thể xóa liên kết lược đồ khỏi một dạng xem, thực hiện các thay đổi đối với / s bảng cơ sở, sau đó áp dụng lại liên kết lược đồ.

Có hai cách để xóa liên kết lược đồ khỏi một chế độ xem:

  • Thay đổi chế độ xem để định nghĩa của nó không còn chỉ định liên kết lược đồ.
  • Bỏ chế độ xem (sau đó tạo lại chế độ xem mà không có liên kết lược đồ nếu cần).

Ví dụ về Chế độ xem liên kết lược đồ

Đầu tiên, đây là một ví dụ về chế độ xem liên kết giản đồ:

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

Chúng tôi biết đó là chế độ xem liên kết giản đồ vì nó chứa WITH SCHEMABINDING trong định nghĩa của nó. Để xóa liên kết lược đồ, tất cả những gì chúng ta cần làm là xóa bit đó.

Tùy chọn 1 - Thay đổi chế độ xem

Để xóa liên kết lược đồ khỏi chế độ xem này bằng cách thay đổi nó, chúng tôi có thể sử dụng mã sau:

ALTER VIEW dbo.v_Cats
AS
    SELECT 
        CatId,
        CatName,
        Phone
    FROM dbo.Cats;
GO

Tất cả những gì chúng tôi đã làm là thay đổi CREATE thành ALTER và xóa WITH SCHEMABINDING .

Tùy chọn 2 - Thả chế độ xem

Dưới đây là một ví dụ về việc loại bỏ chế độ xem, sau đó tạo lại chế độ xem mà không có liên kết lược đồ:

DROP VIEW IF EXISTS dbo.v_Cats;
GO

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

Trong trường hợp này, tôi đã sử dụng cú pháp DROP IF EXISTS, cú pháp này ngăn lỗi xảy ra trong trường hợp chế độ xem không tồn tại.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem một Bảng có được tham chiếu bởi một khóa ngoại trong SQL Server với OBJECTPROPERTY () hay không

  2. Tính toán số tháng đầy đủ giữa hai ngày trong SQL

  3. Làm cách nào để lấy phần số từ một chuỗi bằng T-SQL?

  4. Cách xem nhiều truy vấn và kết quả song song trong SQL Server Management Studio (SSMS) - Hướng dẫn sử dụng SQL Server / TSQL Phần 14

  5. Máy chủ SQL CHỌN VÀO @variable?