此外,如果在有列的派生值的表上构建视图,则不可通过该视图更新那列。然而,可更新该视图中的其他列。在可更新的视图中,您可通过将值插入到该视图内来更新基础表中的值。
CREATE VIEW cust_view AS SELECT * FROM customer; UPDATE cust_view SET customer_num=10001 WHERE customer_cum=101;
CREATE VIEW cust_view AS SELECT * FROM customer; UPDATE cust_view SET customer_num=10001 WHERE customer_num=101;
当更新值不适合定义了该视图的 SELECT 语句时,您可使用数据完整性约束来防止用户更新基础表中的值。要获取更多信息,请参阅 WITH CHECK OPTION 关键字。
以 UPDATE 语句直接修改视图中的数据值的替代方法,是在该视图上创建 INSTEAD OF 触发器。要获取更多信息,请参阅 视图上的 INSTEAD OF 触发器。