mac中navicat无法修改视图
本人使用的是mac版navicat premium 12
视图的简单介绍
创建视图的原因是简化查询语句,使查询语句更精简,易懂。但是视图对于查询效率本身不会有什么提高,而且视图查询出来的数据并不会存储在数据库中。而是每次使用视图的时候调用视图的sql语句查询
还有名字相近的物化视图(其实与传统视图并没有毛关系),也就是navicat 中的实体化视图。物化视图是存储在数据库中的真实存在的表(其实就是将select查询出来的数据写入一张表中,相当于一张真实的数据表),但是他不会随着原始数据的改变而刷新,需要手动刷新(据了解,oracle已经可以自动刷新,其他的好像没有)。
视图的修改问题
windows 的版本navicat视图的修改是
CREATE OR REPLACE VIEW “public”."__active_time_view" AS SELECT get_year(at.d)::double AS year,
mac版本中的navicat中
是要先删除(drop掉)原始的视图,再创建视图,对不起,如果你的视图被其他使用(即被其他使用),是不能修改的
给出的方法是:
参考windows中的sql语句,手动修改,并在命令行去执行
忘了:如果是视图依赖问题,windows可能也是不可以的,下面会给出详细的情况
特殊的视图依赖情况
其实只要是不修改原来的视图数据,即使视图依赖也是可以直接修改的,如果你没修改原始的数据,比如说添加新的字段,是可以修改成功的。如果发生错误,可能是你在操作的过程中navicat修改了原来数据的数据类型导致的,可以检查一下数据类型是否发生改变
修改视图字段名字(修改视图本身)
对于这个东西,如果依赖,现在是没有什么办法,只能先删除依赖,再进行修改。
尽量不要使用视图的嵌套使用,操作性很差。