暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-30556:在要修改的列上已定义函数索引或位图连接索引

原创 三石 2021-02-20
4281

今天领导说有个表的列属性没法修改,让我摸清前因后果

开始操作

–表HLZNB20210220 操作
–修改表—失败
ALTER TABLE HLZNB20210220 MODIFY F_ZBH VARCHAR2(30);

–统计表数据1000条
select count(*) from HLZNB20210220 ;

–查询索引涉及的列
select * from user_ind_columns where table_name = 'HLZNB20210220 ';

select * from user_ind_expressions where index_name =‘HLZNB20210220_INDEX1’;

F_UNITID、SYS_NC00016、SYS_NC00017、SYS_NC00018(F_ZBH) 发现这个奇形怪状的 SYS_NC00018 其实代表的列是 F_ZBH 是个函数索引,正好我们修改的是 F_ZBH

–那么我该如何找到索引的创建语句,以下语句不成功,说是超过实际条数(应该是登陆服务器),最后还是通过 PLSQL查询SQL查到的
select dbms_metadata.get_ddl(‘LSYHZSJSH2015’,‘LSYHZSJSH2015_INDEX1’) from dual;
select dbms_metadata.get_ddl(‘LSYHZSJSH2015_INDEX1’,‘F_ZBH’) from dual;

select dbms_metadata.get_ddl(‘INDEX’,‘IDX_NAME’,‘CWBASE1_9999’) from dual;
select dbms_metadata.get_ddl(‘INDEX’,‘LSYHZSJSH2015_INDEX1’,‘SCOTT’) from dual;

–数据备份
create table HLZNB20210220_bak as select * from HLZNB20210220;

select count(*) from HLZNB20210220_bak;

–删除索引
drop index LSYHZSJSH2015_INDEX1;

–修改属性
ALTER TABLE LSYHZSJSH2015 MODIFY F_ZBH VARCHAR2(30);

–创建索引
create unique index LSYHZSJSH2015_INDEX1 on LSYHZSJSH2015 (F_UNITID, F_QXBH DESC, F_SJBH DESC, F_ZBH DESC) tablespace CWDATA1;

原理分析

1、函数索引的作用(挖坑)

2、dbms_metadata.get_ddl 的用法(挖坑)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • 开始操作
  • 原理分析