1.问题
视图VIEW1在VIEW2有串用,在VIEW1中最前面增加栏位 L3,未重新编译导致VIEW2视图中的栏位均错位一位。
2.问题详细说明
表1 L : 三个栏位L1,L2,L3
表2 A : 三个栏位A1,A2,A3
表3 B : 三个栏位B1,B2,B3
VIEW1:
|-----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|
| 原本 | 调整后 |
| CREATE VIEW VIEW1 -- ======================= AS SELECT L1,L2,A.* FROM L.L1= A.A1 | CREATE VIEW VIEW1 -- ======================= AS SELECT L3, L1,L2,A.* FROM L.L1= A.A1 |
VIEW2
|----------------------------------------------------------------------------------------------------------|
| 视图 |
| CREATE VIEW VIEW2 -- ======================= AS SELECT A.*,D.B2 FROM VIEW1 C LEFT JOIN B D ON C.L1=D.B1 |
只更新VIEW1,未重新编译VIEW2的情况下若使用SELECT * FROM VIEW2 会导致显示的数据内容对应连续错一位。
3.解决办法
重新对引用 VIEW1的VIEW2均需要再重新编译一次,同时建议一般新增需要的栏位,放到最后,避免影响最少。
|---------------------------------------------------------------------------------------------------------|
| ALTER VIEW VIEW2 -- ======================= AS SELECT A.*,D.B2 FROM VIEW1 C LEFT JOIN B D ON C.L1=D.B1 |