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

Tạo một dạng xem liên kết lược đồ trong SQL Server

Thường là một ý tưởng hay nếu lược đồ liên kết các chế độ xem của bạn trong SQL Server.

Lược đồ ràng buộc chế độ xem của bạn sẽ đảm bảo rằng các bảng bên dưới không thể thay đổi theo cách có thể ảnh hưởng đến chế độ xem. Nếu không có liên kết lược đồ, các bảng bên dưới hoặc các đối tượng khác có thể bị sửa đổi hoặc thậm chí bị xóa. Nếu điều đó xảy ra, chế độ xem sẽ không còn hoạt động như mong đợi.

Để tạo chế độ xem liên kết giản đồ, hãy sử dụng WITH SCHEMABINDING trong mã T-SQL của bạn để tạo chế độ xem.

Ví dụ

Dưới đây là một ví dụ về cách tạo chế độ xem liên kết giản đồ:

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

Lưu ý rằng tôi đã sử dụng tên gồm hai phần khi tham chiếu bảng trong truy vấn của mình - tôi đã sử dụng dbo.Cats thay vì chỉ Cats . Thực hiện điều này là một yêu cầu đối với lược đồ ràng buộc một đối tượng. Nếu bạn cố gắng liên kết lược đồ một đối tượng mà không sử dụng tên gồm hai phần, bạn sẽ gặp lỗi.

Bây giờ, tôi đã ràng buộc lược đồ với chế độ xem của mình, nếu tôi cố gắng bỏ bảng được tham chiếu trong định nghĩa của nó, tôi sẽ gặp lỗi:

DROP TABLE Cats;

Kết quả:

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

Dưới đây là những gì sẽ xảy ra nếu tôi cố gắng liên kết lược đồ với chế độ xem mà không sử dụng đặt tên hai phần:

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

Kết quả:

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.

Các thuộc tính Chế độ xem Khác

Nhiều thuộc tính có thể được phân tách bằng dấu phẩy. Bạn không cần chỉ định WITH cho mỗi thuộc tính.

Ví dụ:nếu bạn muốn chế độ xem bị ràng buộc giản đồ được mã hóa, bạn có thể thực hiện việc này:

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. Làm cách nào để tạo một số ngẫu nhiên cho mỗi hàng trong một lựa chọn T-SQL?

  2. MAMP có nên trả về ::1 dưới dạng IP trên localhost không?

  3. Cách nhanh nhất để cập nhật 120 triệu bản ghi

  4. Cách tạo truy vấn tổng hợp trong máy chủ sql mà không có hàm tổng hợp

  5. Cách mới để sao chép tệp trong SQL Server 2019