【发布时间】:2012-01-24 09:48:25
【问题描述】:
我需要用视图替换一些旧表。如何在视图中指定列类型?
例如。旧表包含列 int(10) unsigned。我的视图将其替换为int(11) 和cast(mycolumn as unsigned) 将其转换为int(11) unsigned。但是旧的 .net-application 在类型转换期间会产生错误(我无法修改它来修复此错误)。
我能做什么?
【问题讨论】:
我需要用视图替换一些旧表。如何在视图中指定列类型?
例如。旧表包含列 int(10) unsigned。我的视图将其替换为int(11) 和cast(mycolumn as unsigned) 将其转换为int(11) unsigned。但是旧的 .net-application 在类型转换期间会产生错误(我无法修改它来修复此错误)。
我能做什么?
【问题讨论】:
我从未听说有一种方法可以为任何已知数据库(oracle、mssql、mysql、postgres)中的视图列手动指定数据类型。它根据正在选择的真实表列的数据类型或某些函数自动计算,例如CAST 就像你的情况一样。所以解决方案可能是使用强制转换。
【讨论】:
使用视图列所需的返回类型定义一个函数。使用您的函数计算所需的值。视图列的类型将作为函数返回类型。
【讨论】:
对于那些感兴趣的人: 我创建了一个“假”物化视图,它的加载速度要快得多。然后我更改所需的列类型。
【讨论】: