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 đồ và đượ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