现要将数据库中原整形ID数据类型修改成GUID,但以前表中已有数据,该怎么办?是先修改类型,还是先修改数据?
例如,表1 Person
ID NUMBER(19),
ORG_ID NUMBER(19), //外键
NAME VACHAR(20)
表2 Org
ID NUMBER(19), //Key
NAME VACHAR(30)
例如,表1 Person
ID NUMBER(19),
ORG_ID NUMBER(19), //外键
NAME VACHAR(20)
表2 Org
ID NUMBER(19), //Key
NAME VACHAR(30)
--1、创建备份表将数据备份
create table Person_bk as select * from Person;
create table Org_bk as select * from Org;
--2、清空原表数据
truncate table Person;
truncate table Org;--3、修改表结构
alter table Person modify id varchar2(10);
alter table rename column id to Guid;
.....--4、将数据倒回
insert into Person select * from Person_bk;
insert into Org select * from Org_bk;
--你是想要一个自动增加的主键是吧
--取出目前最大的id值 假设为1000
--创建一个序列
create sequence my_sequence
start with 1001
increment by 1;--再创建一个触发器实现自动递增
create or replace trigger my_trigger
before insert on Person
for each row
begin
select my_sequence
into :new.id
from dual;
end;
2、禁用外键约束:alter table 表名 disable constraint 约束名。