给表追加主键-----报错ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键

时间:2022-09-04 13:23:37

由于 这次 项目 做了 数据库 迁移(从 mysql 转到oracle  用的是navicat) 的工具  所以导致很多主键都丢失了

导致数据库很多 数据的id重复  导致系统修改一条数据的时候 出现很多值相同  郁闷了大半天

然后 打算在plsql中 给现有的某张表  追加主键

教科书形式 如下

/*

1、创建表的同时创建主键约束
(1)无命名
create table student (  studentid int primary key not null,  studentname varchar(8),  age int);
(2)有命名
create table students (    studentid int ,    studentname varchar(8),    age int,    constraint yy primary key(studentid));
2、删除表中已有的主键约束
(1)有命名
 alter table students drop constraint yy;
(2)无命名
可用 SELECT   *   from   user_cons_columns;
查找表中主键名称得student表中的主键名为SYS_C002715
alter table student drop constraint SYS_C002715;
3、向表中添加主键约束
 alter table student add constraint pk_student primary key(studentid); 

*/

实际项目用如下:

alter table SDINTCALENDAR
  add constraint SDINTCALENDAR_PRIMARYKEY primary key (ID)
  using index
  tablespace DEV2_DATA
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

结果报错 ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键

查了网上 一资料 http://www.itpub.net/thread-917613-1-1.html 才恍然大悟

追加主键之前  必须 先删除或修改原有重复id 的记录 就可以了