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;
PostgreSQL可更新视图
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 视图是一个基于一个或多个表的数据定义的虚拟表。视图是没有数据的,视图里面的数据都是来自实际的表。 视图的作用: 简...
- 在postgresql中,如果创建视图后,需要修改基础表,会出现一些问题。 基础表和视图 添加字段的测试 针对上面...
- 题意:给你一串日期,这些日期都是星期五。但是每个字符都被加密了,以一种简单的映射(根据题意,是一个双射)规则比如A...
- 近期阅读的内容,主要是关于政治家的品格、中庸、正义和善的本质。以下是我的读书心得: 1. 政治家是什么?政治家和官...