首页 > 解决方案 > 检查 SQL Server 中的视图

问题描述

在 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 执行这样的检查?

标签: sqlsql-servertsql

解决方案


可以在 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

推荐阅读