oracle修改索引字段(【求助】oracle中sql语句 此列列表已索引的解决办法)

本文目录
【求助】oracle中sql语句 此列列表已索引的解决办法
根据你建表的语句,确实不需要再创建索引,因为这两列被你设为主键,所以你再建索引会报错。
创建主键时数据库会创建同名的唯一索引,当然因为是主键的关系,所以和直接创建唯一索引还是有一点区别:作为主键这两列的值不允许为空
oracle中如何将主码的索引由升序改为降序
创建索引的时候指定啊。
create
index
索引名
on
表名(列名
desc);--desc就指定是降序的。
可以测试:
在表的一列上建个降序索引。建个非空约束。查找该列,查询执行计划,是索引全扫描。查出来的数据是从大玩小查出来的。
CREATE
TABLE
ttt(ID
NUMBER);
ALTER
TABLE
TTT
MODIFY
ID
NOT
NULL;
CREATE
INDEX
idx_ttt
ON
ttt(ID
DESC);
BEGIN
FOR
i
IN
1
..
100
LOOP
INSERT
INTO
ttt
(id)
VALUES
(i);
END
LOOP;
COMMIT;
END;
/
BEGIN
dbms_stats.gather_table_stats(ownname
=》
’HR’,
tabname
=》
’TTT’);
dbms_stats.gather_index_stats(ownname
=》
’HR’,
indname
=》
’IDX_TTT’);
END;
/
SELECT
t.id
FROM
ttt
t;--查看执行计划,索引全扫描。
--查询出来的数据是从100往1方向的。
SELECT
/*+no_index(t
idx_ttt)*/t.id
FROM
ttt
t;--查看执行计划,全表扫描
--查询出来的数据是从1往100方向的。
修改一个数据表的字段值,可是这个字段是索引列,修改有错误提示
错误的大概意思就是,数据库中你要修改的字段本来没有有主键约束或唯一约束,而现在你要在这个字段上加上主键或唯一约束,如果数据库中没有数据这样做当然不会有任何问题,可是从你的错误来看你的数据库中已经有了数据,而且在你要修改的字段上有重复的数据
例如:你的数据库中有两个字段id,name,此时你的数据库中的数据:001,zhangsan;002,lisi;003,zhangsan,此时你在name字段上加主键约束或唯一约束的话就会出你说的错误
解决办法:
1、如果你的数据库允许你现有的数据有重复的数据,你可以在可视化界面下建立主键或约束,在完成那一步里有个选项会询问是否检测现有数据,勾掉就可以了
2、如果你的数据库不允许你现有的数据有重复的数据,这样就比较麻烦了,你可以再别的列上加约束,也可以用多列上建立约束
注:其中有些地方说的不一定准确,还请以事实为依据

更多文章:
blast premier春季赛(csgo战队vitality有谁)
2026年9月7日 21:50
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20




