SQL创建视图(View)盲点之无法同步更新
一、前言
会写这篇文章主要是给自己和大家提个醒。
场景:我有两个视图,分别在不同的服务器,视图A和视图B,通过创建数据库链接实现在视图A获取视图B的内容,在视同A的语句中直接通过通配符“*”查询视图B的所有字段,如下:
--视图A SELECT * FROM 视图B --视图B SELECT 字段A,字段B,..... FROM 表B
上面这段语句看上去是没什么问题的,反正是查所有字段嘛,用*也说的过去
不过问题就这么产生了,如果这个时候我更新了视图B,比如说加了几个字段或者修改几个字段的排列顺序,这个时候你再通过SELECT去查询视图A的时候会发现字段和值会有对不上的情况,甚至在B中新加的几个字段再A中都查不到
这时候我就怀疑视图A并没有实时更新,于是我就把视图A删了重建,发现就可以了
二、建议
创建视图的时候尽量不要使用*,而是明确的指出要查询的字段,如:SELECT 字段A,字段B FROM 视图B,否则就会出现视图无法同步更新的问题
以上纯属个人观点,欢迎讨论