PostgreSQL可更新视图

PostgreSQL视图在满足以下条件时可以更新:

(1)、该视图的定义的查询必须在 from 子句中只有一个条目,该条目可以是一个表或另一个可更新的视图。
(2)、定义的查询不能在顶层包含以下子句之一:GROUP BY,HAVING,LIMIT,OFFSET,DISTINCT,WITH,UNION,
INTERSECT 和 EXCEPT。
(3)、选择列表不得包含任何窗口函数或设置返回函数或任何聚合函数,如 SUM,COUNT,AVG,MIN 和 MAX 等。

可更新视图可以同时包含可更新列和不可更新字段。如果尝试插入或更新不可更新的字段,PostgreSQL 将抛出错误。

当在可更新视图执行 INSERT,UPDATE 或 DELETE 等更新操作时,PostgreSQL 将把这个语句转换成相应源数据表的语句。

如果在视图的定义查询中有 WHERE 条件,则仍然可以更新或删除在视图中不可见的行。如果要避免这种情况,则可以在定义
视图时使用 CHECK OPTION。


案例:
创建可更新视图:
create view usa_city as select * from city where country_id=103;

select * from usa_city;
更新视图插入新数据(因为视图的from字句只有一个条目"city",一次它是可更新操作的)
insert into usa_city (city_id,city,country_id) values (1000,'San Joes',103);
select * from usa_city where city_id=1000;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容