我在建立的局部索引前加了唯一性约束,怎么不起作用?
悬赏:5 发布时间:2008-07-21 提问人:yg (初级程序员)
/*==============================================================*/
/* Table: IDCAS_T_DEGR */
/*==============================================================*/
create table IDCAS_T_DEGR (
IDCAS_K_DEGR INT not null,
F_TYPE VARCHAR(4) not null,
F_ACCO VARCHAR(30) not null,
F_PASS VARCHAR(30),
F_REMARK VARCHAR(200),
F_SIGN VARCHAR(10) default '0000000000' not null,
F_MEMO1 VARCHAR(200),
F_MEMO2 VARCHAR(200),
F_MEMO3 VARCHAR(200),
constraint PK_IDCAS_T_DEGR primary key (IDCAS_K_DEGR)
)
partition by list
( F_TYPE )
( partition part_type01
values ( 01 ) );
/*==============================================================*/
/* Index: IDCAS_I_DEGR */
/*==============================================================*/
create unique index IDCAS_I_DEGR on IDCAS_T_DEGR (
F_TYPE,F_ACCO
) local;
我想问:我在建立的局部索引前加了唯一性约束,怎么不起作用?竟然插入重复值也可以?是否局部索引不能具有唯一性?
我用的数据库是oracle10g
/* Table: IDCAS_T_DEGR */
/*==============================================================*/
create table IDCAS_T_DEGR (
IDCAS_K_DEGR INT not null,
F_TYPE VARCHAR(4) not null,
F_ACCO VARCHAR(30) not null,
F_PASS VARCHAR(30),
F_REMARK VARCHAR(200),
F_SIGN VARCHAR(10) default '0000000000' not null,
F_MEMO1 VARCHAR(200),
F_MEMO2 VARCHAR(200),
F_MEMO3 VARCHAR(200),
constraint PK_IDCAS_T_DEGR primary key (IDCAS_K_DEGR)
)
partition by list
( F_TYPE )
( partition part_type01
values ( 01 ) );
/*==============================================================*/
/* Index: IDCAS_I_DEGR */
/*==============================================================*/
create unique index IDCAS_I_DEGR on IDCAS_T_DEGR (
F_TYPE,F_ACCO
) local;
我想问:我在建立的局部索引前加了唯一性约束,怎么不起作用?竟然插入重复值也可以?是否局部索引不能具有唯一性?
我用的数据库是oracle10g
采纳的答案
2008-07-22 lggege (资深程序员)
create unique index IDCAS_I_DEGR on IDCAS_T_DEGR ( F_TYPE,F_ACCO ) local;
你的unique index 是组合索引,也就是F_TYPE F_ACCO 的组合的值不能相同.
我的测试SQL:
insert into IDCAS_T_DEGR values(1, 'a', 'a', null, null, 'a', null, null, null); insert into IDCAS_T_DEGR values(2, 'a', 'a', null, null, 'a', null, null, null);
我测试,第一条能插入,不能插入第二条数据,抛的错就是: 违法唯一约束条件:IDCAS_I_DEGR
所以, 你的SQL没错, 是否你没注意这是组合的索引 ???
提问者对于答案的评价:
谢谢啊
是我的分区有问题,分区字段是字符,应加单引号,忘了!
额外加分:10




