可以将不满足视图条件的行(也就是无法通过视图进行查看的行)插入到视图中。还可以更新视图的行,以使其不再满足视图的条件。
CREATE VIEW response (user_id, received, resolved, duration) AS
SELECT user_id,call_dtime,res_dtime,res_dtime - call_dtime
FROM cust_calls
WHERE user_id = USER
UPDATE response SET user_id = 'lenora'
WHERE received BETWEEN TODAY AND TODAY - 7
CREATE VIEW response (user_id, received, resolved,duration) AS
SELECT user_id, call_dtime, res_dtime, res_dtime - call_dtime
FROM cust_calls
WHERE user_id = USER
WITH CHECK OPTION
用户 tony 所作的上述 UPDATE 操作被当作错误而遭到拒绝。
CREATE VIEW order_insert AS
SELECT * FROM orders O
WHERE order_date = TODAY -- no back-dated entries
AND EXISTS -- ensure valid foreign key
(SELECT * FROM customer C
WHERE O.customer_num = C.customer_num)
AND ship_weight < 1000 -- reasonableness checks
AND ship_charge < 1000
WITH CHECK OPTION
由于需要执行 EXISTS 和其他测试(当数据库服务器检索现有行时,这些测试应该能成功),此视图显示 orders 中数据的效率不高。然而,如果对 orders 执行的插入操作只通过此视图进行(并且还没有使用完整性约束来约束数据),那么用户无法插入延期订单、无效的客户号或过高的装运重量和运费。