1. 复制表,删除表数据,若是数量大,能够rownum<2 sql
create skype_sms_BAK table AS SELECT * FROM skype_sms
delete from skype_sms_BAK
咱们将在备份表上进行增长主键的操做 oracle
2. 增长一个普通字段 ui
alter table skype_sms_BAK add SKYPE_SMS_ID varchar2(50);
--此时因为表没有数据,因此能够直接alter主键 spa
alter table skype_sms_BAK add constraint PK primary key (SKYPE_SMS_ID);
3.拷贝全部原表的数据+上一个新增的id字段到bak表中,在这里,id选择的oracle自带的uuid code
insert into skype_sms_bak select t.* ,(select sys_guid() as skype_sms_id from dual ) from skype_sms t
4.删除原有表,再把bak表复制为原表 table
create skype_sms table AS SELECT * FROM skype_sms_bak
5.因为本来的表就没有主键,因此原始的程序代码插入的时候确定是没有主键生成策略的,为了让更改最小话,这里使用触发器完成主键策略. class
create or replace trigger skype_sms_trigger before insert on skype_sms for each row begin select sys_guid() into :new.skype_sms_id from dual; end ;