SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012.07.10号更新重复客商的约束:

1 直接使用alter会报错,因为之前没有使用约束,oracle中已经有了重复的客商

SQL> alter table bd_cubasdoc add constraint one_custname unique(custname);
 
alter table bd_cubasdoc add constraint one_custname unique(custname)
 
ORA-02299: 无法验证 (XMV502.ONE_CUSTNAME) - 找到重复关键字

2,得到itpub版主ZALBB的指示:尝试:先建普通索引,再建唯一性约束,使用先前的普通索引,enable novalidate。

下图在plsql上可视化的创建普通索引

或者

create index ONE_NAME on BD_CUBASDOC (CUSTNAME)

 

之后使用enable novalidate达到对数据库中已有重复客商的忽略(novalidate:无效)

SQL> alter table bd_cubasdoc add constraint one_custname unique(custname) using index enable novalidate;
 
Table altered

或者

SQL>  alter table BD_CUBASDOC add constraint ONE_CUSTNAME unique (CUSTNAME)  rely enable novalidate;
 
Table altered

或者

SQL> alter table BD_CUBASDOC add constraint UCNAME unique (CUSTNAME)  enable novalidate;
 
Table altered

 

 上面table altered之后,通过查看表或者constraint,发现keys多了一行unique

ps:如果是check约束,会在右边的checks增加一行。

通过,同我的trigger效果一样

下面是oracle后台跑的代码

删除keys中的unique:

alter table BD_CUBASDOC
  drop constraint ONE_CUSTNAME cascade;

创建时候:

create index ONE_NAME on BD_CUBASDOC (CUSTNAME)
  tablespace NNC_DATA01
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 256K
    next 256K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

alter table BD_CUBASDOC
  add constraint ONE_CUSTNAME unique (CUSTNAME);
posted on 2012-05-29 22:55  sumsen  阅读(590)  评论(0编辑  收藏  举报