12c~相同列上的多个索引

1 在12c中,允许多个索引存在于同一个列中

SQL> create unique index dept_idx1 on dept1(deptno);

Index created.

2 如果我们尝试在相同列创建列一个索引将报错

SQL> create unique index dept_idx2 on dept1(deptno);
create unique index dept_idx2 on dept1(deptno)
                                       *
ERROR at line 1:
ORA-01408: such column list already indexed

3 将唯一列设置为不可见列之后,可在相同列上创建索引

SQL> alter index dept_idx1 invisible;

Index altered.

SQL> create  index dept_idx2 on dept1(deptno);

Index created.

虽然索引不可见,但是被不可见的唯一索引还是生效的,我们无法插入重复值

SQL>  insert into dept1(deptno) values (10);
 insert into dept1(deptno) values (10)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.DEPT_IDX1) violated

查看表上的索引以及索引类型

SQL> col index_name for a30
SQL> select a.table_name,a.index_name,b.column_name,a.uniqueness,a.visibility
from user_indexes a,user_ind_columns b where a.index_name=b.index_name and a.table_name='DEPT1' ;

TABLE_NAME		       INDEX_NAME		      COLUMN_NAME		     UNIQUENES VISIBILIT
-------------------- ------------------------------ -------------------------- --------
DEPT1			       DEPT_IDX1		      DEPTNO			     UNIQUE    INVISIBLE
DEPT1			       DEPT_IDX2		      DEPTNO			     NONUNIQUE VISIBLE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韶博雅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值