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...