zoukankan      html  css  js  c++  java
  • select * from 在自定义函数(视图)中的特殊问题(在后面附解决办法)

    目录

    1、提出问题

    在自定义表值函数中,如果有返回select * from的情况 这个时候如果修改表结构,如添加表的字段表值函数的返回值就会和实际值不相同。

    修改前表结构

    修改前表的数据

    自定义表值函数

    修改表结构前搜索结果

    修改后表结构

    修改表结构后的查询结果

    2、分析问题

    如上图,大家可以看到自定义函数查询结果的ttt列结果不对了

    变成了createdate列的结果,而createdate列没有了。

    个人推测是自定义函数编译的时候自动会把select * from 解析成具体的列,并且保存,但是查询语句还是直接保存。

    所以当表结构表的时候按照列的数组取匹配了,这样就会出现上图的问题,第一列匹配第一列,第n列匹配第n列,

    ttt列匹配成添加的列createdate。而原来的ttt 就变成不显示了。


    3、解决问题:

    1、我认为避免的最好办法是不用Select *

    2、重新编译自定义函数

    3、如果可以,重新生成自定义函数的列(已确认见后面订正内容)--

     

    --订正内容 12:51

    从上图中可以看到修改表结构后,自定义函数的列没有修改,验证了我的猜测。

    解决办法3 - 重新编译

    我自己写了一个重新编译的SQL

    修改后执行的sql:

    因为有修改所以CreateDate现在变成了NuLL

    但是结果是正确的了。

    欢迎大家踊跃推荐和讨论。

  • 相关阅读:
    在window10系统下安装redis
    Dubbo 基础用法
    vue处理对象值改变时dom值没有跟着变化的问题
    KMP算法
    Leetcode 502 IPO
    vue页面无法正常渲染的问题
    vue锚点双向绑定
    JavaScript克隆一个对象
    el-table刷新后table出现抖动现象
    el-table组件去掉滚动条的问题
  • 原文地址:https://www.cnblogs.com/tangruixin/p/2505754.html
Copyright © 2011-2022 走看看