Oracle11g不能在创建具有重复列的函数索引了
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle11g不能在创建具有重复列的函数索引了,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2416字,纯文字阅读大概需要4分钟。
内容图文
![Oracle11g不能在创建具有重复列的函数索引了](/upload/InfoBanner/zyjiaocheng/549/8df6e48c533f4b1390e785d692179a92.jpg)
把一个测试系统的数据从Oracle 10g迁移到11g中后,听开发人员说他们有个创建索引的SQL语句执行失败,但是在10g里面是能够正常执行
把一个测试系统的数据从Oracle 10g迁移到11g中后,听开发人员说他们有个创建索引的SQL语句执行失败,但是在10g里面是能够正常执行。这个索引是一个具有重复列的函数索引,可能是手误并且这个索引没怎么用,所以就一直没注意这个索引。自己感觉挺有意思的,于是就自己试验了一下:
1、先来看11g的情况:
[oracle@instsvr1 ~]$ sql
SQL*Plus: Release 11.2.0.2.0 Production on Fri Mar 16 11:29:33 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
srcbdb@SYS> conn vip
Enter password:
Connected.
非函数索引如果具有重复的列是不允许创建的:
srcbdb@VIP> create index lzb on T_SYS_PARAM (param_id,PARAM_ID);
create index lzb on T_SYS_PARAM (param_id,PARAM_ID)
*
ERROR at line 1:
ORA-00957: duplicate column name
在11g里面即使是函数索引,但是具有重复的列也是不允许创建的:
srcbdb@VIP> create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'));
create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'))
*
ERROR at line 1:
ORA-54015: Duplicate column expression was specified
2、再来看10g的情况
[oracle@dctest1 ~]$ sql
SQL*Plus: Release 10.2.0.4.0 - Production on Mon Mar 19 19:32:20 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
dgut@SYS> conn vip
Enter password:
Connected.
在10g里面非函数索引如果具有重复的列也是不允许创建的:
dgut@VIP> create index lzb on T_SYS_PARAM (param_id,PARAM_ID);
create index lzb on T_SYS_PARAM (param_id,PARAM_ID)
*
ERROR at line 1:
ORA-00957: duplicate column name
最后来看神奇的一幕,,在10g里面如果是函数索引,即使是具有重复的列,索引依然能创建成功:
dgut@VIP> create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'));
Index created.
总结:虽然创建具有重复列的函数索引没什么意义,甚至更差,但是这个11g和10g的使用差别挺有意思的就记录了下来,只能所11g更严谨了,呵呵!
内容总结
以上是互联网集市为您收集整理的Oracle11g不能在创建具有重复列的函数索引了全部内容,希望文章能够帮你解决Oracle11g不能在创建具有重复列的函数索引了所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。