由于 这次 项目 做了 数据库 迁移(从 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 的记录 就可以了