现要将数据库中原整形ID数据类型修改成GUID,但以前表中已有数据,该怎么办?是先修改类型,还是先修改数据?
例如,表1 Person 
          ID                 NUMBER(19),
          ORG_ID                 NUMBER(19), //外键
          NAME               VACHAR(20)
      表2 Org
           ID                 NUMBER(19), //Key
           NAME               VACHAR(30)

解决方案 »

  1.   


    --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;
      

  2.   

    楼上兄弟,insert into 表时不用 sys_guid()吗?它会不会自动生成啊?
      

  3.   


    --你是想要一个自动增加的主键是吧
    --取出目前最大的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;
      

  4.   

    1、不会自动生成,使用sys_guid()。
    2、禁用外键约束:alter table 表名 disable constraint 约束名。