ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 1255|回复: 0

分区表如何进行unique约束和local索引分离?

[复制链接]
论坛徽章:
2
妮可·罗宾
日期:2016-11-29 22:14:05秀才
日期:2016-12-21 16:55:07
发表于 2017-3-26 00:49 | 显示全部楼层 |阅读模式
本帖最后由 yueli34 于 2017-3-26 00:51 编辑

分区表如何进行unique约束和local索引分离?如果使用unique约束建立时由约束自动创建索引,那么disable唯一性约束会导致的索引被删除。对大分区表影响较大,所以需要对约束和索引进行分离。
可是分区表创建local索引后,就无法创建约束了。请问此情况如何解决?
oracle版本11.2.0.4。还是说12c里解决这个问题了?
分区表:
create table t_p(
id number(30),
create_date date
)partition by range(create_date)(
partition p2015 values less than(to_date('2016-01-01','yyyy-mm-dd')),
partition p2016 values less than(to_date('2017-01-01','yyyy-mm-dd')),
partition p2017 values less than(maxvalue)
);


插入300条数据:
insert into t_p(id,create_date) select
level,
to_date('2015-01-01','yyyy-mm-dd')+trunc(dbms_random.value(0,1095))
from dual connect by level<=300;


建立local索引:
create index t_p_ind_id on t_p(id)  local;

建立唯一性约束:
SQL> alter table t_p add constraint t_p_cons_id unique(id);
alter table t_p add constraint t_p_cons_id unique(id)
*
ERROR at line 1:
ORA-01408: such column list already indexed
local索引的时候,无法再建立unique约束。

如果是global索引则可以在建立约束后再建立约束:
SQL> drop index t_p_ind_id;
Index dropped.


SQL> create index t_p_ind_id on t_p(id) ;
Index created.

SQL> alter table t_p add constraint t_p_cons_id unique(id);
Table altered.
所以,请问对分区表local索引和唯一性约束如何进行分离?


您需要登录后才可以回帖 登录 | 注册

本版积分规则

久等啦!10张门票开启你的DTCC2017之旅~

2017中国数据库技术大会将于2017年5月11-13日如约而至,本届大会以“数据驱动•价值发现”为主题,共设定2大主场和21个技术专场,云集海内外120+位技术大牛,共同探讨Oracle、MySQL、NoSQL、云端数据库、区块链、深度学习等领域的前瞻性热点话题。
即日起,填写DTCC2017会前调查问卷,即有机会赢取价值2600元的大会门票1张!仅限10张!
----------------------------------------
活动截止时间:2017年5月5日统一公布

问卷入口>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表