超过 30 个字符的表名

Posted

技术标签:

【中文标题】超过 30 个字符的表名【英文标题】:Table Name with more than 30 characters 【发布时间】:2012-01-02 13:35:42 【问题描述】:

我在 mysql 数据库中有一个表。表名长度超过 30 个字符 我想在 Oracle 11g 中制作同一张表,但 Oracle 只允许名称中最多包含 30 个字符的表。 不能把表名改成小于30字符,因为系统是基于这些表的,改名会花很多钱,所以改表名不是我的答案我正在寻找。

有一个名为user_tables 的表,当我描述该表时,它说table_name 字段的数据类型为varchar2(30),所以我尝试更改表并制作table_name varchar2(255),但我不能t,它给了我一个错误说:

ORA-00942: 表或视图不存在

我以sys 连接。

有人知道如何解决我的问题吗?

【问题讨论】:

不知道同义词是否支持超过 30 个字符;但这可能是一种解决方法。同义词名称的功能最大长度为 32 个字节。仅 Java 功能允许使用超过 30 个字节的名称。如果您指定的名称超过 30 个字节,则 Oracle 数据库会对该名称进行加密,并将加密的表示形式放在数据字典中。实际的加密是不可访问的,您不能使用原始规范或数据字典表示作为同义词名称。link user_tables 是数据字典的一部分,是一组只读表和视图。您不能更新数据字典中的任何对象。 如果您可以更新系统表,您绝对不知道它可能会对其他所有系统表产生什么影响。 【参考方案1】:

所有 Oracle 标识符都限制为 30 个字符。没有选项可以让您更改它。

【讨论】:

【参考方案2】:

同义词无效:source。 30 的限制是严格而快速的。

编辑: 经过继续研究oracle docs 除非每个 cmets 都在此处安装了 java,否则即使是同义词也无法允许超过 30 个字符。

长话短说:你不能在 oracle 环境中做你想做的事。

【讨论】:

以上是关于超过 30 个字符的表名的主要内容,如果未能解决你的问题,请参考以下文章

中间首字母之前超过 1 个名字的正则表达式

Oracle 标识符最大长度

mysql数据库名和表名可以用任意字符吗

关键词和热门关键词的表设计

MySQL 版本 5.5.37:使用 CURSOR 删除超过 30 天的表

Android BLE 广播定制