检查SQLServer中的视图
在 PostgreSQL 中,我们有一个“WITH LOCAL CHECK OPTION”语句来强制执行在 WHERE 子句中实现的检查。
例如,
CREATE VIEW HeavyOrders AS
SELECT *
FROM Orders
WHERE Weight > 100
WITH LOCAL CHECK OPTION;
现在,如果我们尝试插入一个 raw ,Weight < 100我们会得到一个错误:
INSERT INTO HeavyOrders(x, y, z, Weight)
VALUES('a', 'b', 'c', 80);
有没有办法对 VIEW 执行这样的检查?
回答
可以在 SQL Server WITH CHECK OPTION 中创建视图。WITH CHECK OPTION 将确保针对视图执行的所有 INSERT 和 UPDATE 语句都满足 WHERE 子句中的限制,并且在 INSERT 和 UPDATE 语句之后视图中修改后的数据仍然可见。
CREATE VIEW HeavyOrders AS
SELECT *
FROM Orders
WHERE Weight > 100
WITH CHECK OPTION