各位大牛,小弟在開發過程中,遇到了這樣一個問題,由於新功能的增加需要使原有的一張表的結構作出調整,需要添加一個id主鍵字段,但是因為表里有很多數據了,所以,怎樣才能添加這個字段,並且使原有的數據也能夠獲得id呢?表名為:PROJECT_COLUMN ,請各位大牛幫幫忙,在線等!
兩個方法:
1,重新創建一個表,然后創建一個序列,把老數據導入新表,刪除老表,修改新表名字為老表
2,直接在原來表上增加一個字段,創建一個序列,通過更新的方式修改老數據的這個字段
1,重新創建一個表,然后創建一個序列,把老數據導入新表,刪除老表,修改新表名字為老表
2,直接在原來表上增加一個字段,創建一個序列,通過更新的方式修改老數據的這個字段
create sequence seq_a_id
minvalue 1
maxvalue 999999999999999
start with 1
increment by 1
nocache;
update a set id = seq_a_id.nextval
--創建序列器
CREATE SEQUENCE ID_seq
START WITH 1
INCREMENT BY 1
MINVALUE 1
NOMAXVALUE
ORDER
NOCACHE
NOCYCLE;
--創建新表
create table PROJECT_COLUMN_COPY(
id int primary key default ID_seq.nextval,
COLUMN01 varchar2(20),
COLUMN02 varchar2(20),
COLUMN03 number(9,3),
...
)
--轉移數據
insert into PROJECT_COLUMN_COPY (COLUMN01 ,COLUMN02 ,COLUMN03 ,... )
select * from PROJECT_COLUMN;
--刪除舊表
drop table PROJECT_COLUMN;
--修改表名
alter table PROJECT_COLUMN_COPY rename to PROJECT_COLUMN;
CREATE SEQUENCE ID_seq
START WITH 1
INCREMENT BY 1
MINVALUE 1
NOMAXVALUE
ORDER
NOCACHE
NOCYCLE;
--創建新表
create table PROJECT_COLUMN_COPY(
id int primary key default ID_seq.nextval,
COLUMN01 varchar2(20),
COLUMN02 varchar2(20),
COLUMN03 number(9,3),
...
)
--轉移數據
insert into PROJECT_COLUMN_COPY (COLUMN01 ,COLUMN02 ,COLUMN03 ,... )
select * from PROJECT_COLUMN;
--刪除舊表
drop table PROJECT_COLUMN;
--修改表名
alter table PROJECT_COLUMN_COPY rename to PROJECT_COLUMN;