在本文中,图中我们将讨论如何在SQL Server视图中使用检查选项、检的使加密选项和模式绑定选项,查选并通过示例进行说明。项加项和选项
首先,我们需要创建两个表:Department和Employee,绑定并向这些表中插入一些示例数据。图中
复制-- 创建Department表 CREATE TABLE Department ( ID INT PRIMARY KEY,检的使 Name VARCHAR(50) ); -- 向Department表中插入测试数据 INSERT INTO Department VALUES (1, 信息技术部); INSERT INTO Department VALUES (2, 人力资源部); INSERT INTO Department VALUES (3, 销售部); -- 创建Employee表 CREATE TABLE Employee ( ID INT PRIMARY KEY, Name VARCHAR(50), Gender VARCHAR(10), DOB DATETIME, Salary DECIMAL(18,2), DeptID INT ); -- 向Employee表中插入测试数据 INSERT INTO Employee VALUES (1, 张三, 男, 1996-02-29 10:53:27.060, 25000, 1); INSERT INTO Employee VALUES (2, 李四, 女, 1995-05-25 10:53:27.060, 30000, 2); INSERT INTO Employee VALUES (3, 王五, 男, 1995-04-19 10:53:27.060, 40000, 2); INSERT INTO Employee VALUES (4, 赵六, 女, 1996-03-17 10:53:27.060, 35000, 3); INSERT INTO Employee VALUES (5, 孙七, 男, 1997-01-15 10:53:27.060, 27000, 1);1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30. 复制使用检查选项(WITH CHECK OPTION)1.在SQL Server中,如果创建了一个带有WHERE条件的查选视图,即使后续对视图进行的项加项和选项修改违反了WHERE条件,这些更改仍然会被接受。密选模式例如,源码库绑定创建一个视图来检索IT部门的图中员工:
复制CREATE VIEW vwITDepartmentEmployees AS SELECT ID, Name, Gender, DOB, Salary, DeptID FROM Employee WHERE DeptID = 1;1.2.3.4.
图片
尝试插入一个违反WHERE条件的记录:
复制INSERT INTO vwITDepartmentEmployees (ID, Name, Gender, DOB, Salary, DeptID) VALUES (7, 周八, 男, 1994-07-24 10:53:27.060, 45000, 2);1.这条INSERT语句会成功执行,因为没有启用检查选项。检的使如果想要强制视图遵守其WHERE条件,查选可以在创建视图时添加WITH CHECK OPTION:
复制ALTER VIEW vwITDepartmentEmployees AS SELECT ID, Name, Gender, DOB, Salary, DeptID FROM Employee WHERE DeptID = 1 WITH CHECK OPTION;1.2.3.4.5.
图片
现在,尝试执行之前的INSERT语句将会失败,因为它违反了视图的WHERE条件。
为了安全起见,如果不希望别人看到视图的定义,可以在创建或修改视图时使用WITH ENCRYPTION选项。这样,服务器托管任何尝试查看视图定义的操作都会失败,因为定义已被加密。
复制ALTER VIEW vwITDepartmentEmployees WITH ENCRYPTION AS SELECT ID, Name, Gender, DOB, Salary, DeptID FROM Employee WHERE DeptID = 1 WITH CHECK OPTION;1.2.3.4.5.模式绑定选项确保视图绑定到它引用的数据库对象。如果视图使用了SCHEMABINDING,则无法修改影响视图定义的数据库对象,除非先修改或删除视图。
复制ALTER VIEW vwITDepartmentEmployees WITH SCHEMABINDING AS SELECT ID, Name, Gender, DOB, Salary, DeptID FROM dbo.Employee WHERE DeptID = 1 WITH CHECK OPTION;1.2.3.4.5.尝试删除或修改Employee表将导致错误,因为它被视图引用。
图片
以上就是在SQL Server中使用检查选项、加密选项和模式绑定选项的详细介绍和示例。希望这些内容对您有所帮助。免费源码下载