yangggang_only 2008-07-21 17:25
浏览 145
已采纳

我在建立的局部索引前加了唯一性约束,怎么不起作用?

/*==============================================================*/
/* 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 [color=red]unique[/color] index IDCAS_I_DEGR on IDCAS_T_DEGR (
F_TYPE,F_ACCO
) local;

我想问:我在建立的局部索引前加了唯一性约束,怎么不起作用?竟然插入重复值也可以?是否局部索引不能具有唯一性?
我用的数据库是oracle10g

  • 写回答

1条回答 默认 最新

  • lggegegmail 2008-07-22 10:24
    关注

    [code="sql"]create unique index IDCAS_I_DEGR on IDCAS_T_DEGR (
    F_TYPE,F_ACCO
    ) local;[/code]

    你的unique index 是组合索引,也就是F_TYPE F_ACCO 的组合的值不能相同.

    我的测试SQL:
    [code="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);[/code]

    我测试,第一条能插入,不能插入第二条数据,抛的错就是: 违法唯一约束条件:IDCAS_I_DEGR

    所以, 你的SQL没错, 是否你没注意这是组合的索引 ???

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3