异常ORA-14039:分区列必须构成UNIQUE索引的关键字列子集

文章作者 100test 发表时间 2008:03:29 13:53:31
来源 100Test.Com百考试题网



昨天在建一分区表时抛了异常“ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集”,具体过程如下:


SQL> begin
2 execute immediate
3 ’create table MSG_STORAGE_CACHE
4 (
5 NAME VARCHAR2(64) not null,
6 HASHKEY VARCHAR2(100) not null,
7 PACKAGE VARCHAR2(3000) not null,
8 CREATEDATE DATE default SYSDATE
9 )
10 partition by range(CREATEDATE)
11 (
12 partition p_’||to_char(sysdate-6,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate-5,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
13 partition p_’||to_char(sysdate-5,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate-4,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
14 partition p_’||to_char(sysdate-4,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate-3,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
15 partition p_’||to_char(sysdate-3,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate-2,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
16 partition p_’||to_char(sysdate-2,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate-1,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
17 partition p_’||to_char(sysdate-1,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate,’yyyymmdd’)||’’’,’’yyyymmdd’’)),
18 partition p_’||to_char(sysdate,’yyyymmdd’)||’ values less than(to_date(’’’||to_char(sysdate 1,’yyyymmdd’)||’’’,’’yyyymmdd’’))
19 )’.
20 end.
21 /
PL/SQL procedure successfully completed
SQL>
SQL> alter table MSG_STORAGE_CACHE
2 add constraint PK_MSG_STORAGE_CACHE primary key(HASHKEY,NAME) using index local.
alter table MSG_STORAGE_CACHE
add constraint PK_MSG_STORAGE_CACHE primary key(HASHKEY,NAME) using index local
ORA-14039: 分区列必须构成 UNIQUE 索引的关键字列子集
SQL>
原来oracle不支持在分区表上创建PK主键时主键列不包含分区列,创建另外的约束(unique)也不可以。
为了解决这个问题,两种方法:1、将CREATEDATE 列也加上pk列中,采用alter table MSG_STORAGE_CACHE
add constraint PK_MSG_STORAGE_CACHE primary key(HASHKEY,NAME,CREATEDATE) using index local.
2、创建index好了create index indx_MSG_STORAGE_CACHE on MSG_STORAGE_CACHE(HASHKEY,NAME) local.

相关文章


鼠标功能中断INT33H
赋予XP特征强制开启Vista中的隐藏共享
WindowsVista_XP双系统虚拟机安装误区
10G中EM乱码的解决方法
异常ORA-14039:分区列必须构成UNIQUE索引的关键字列子集
Oracle和SAP完全不同的SOA策略
Oracle11g对AWR的扩展
2007大学研究生院理学各一级学科A 级学校
重庆男子自考本科7年未过关拒绝找工作
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛