求脚本

qwpacs 2011-07-21 01:21:22
现要将数据库中原整形ID数据类型修改成GUID,但以前表中已有数据,该怎么办?是先修改类型,还是先修改数据?
例如,表1 Person
ID NUMBER(19),
ORG_ID NUMBER(19), //外键
NAME VACHAR(20)
表2 Org
ID NUMBER(19), //Key
NAME VACHAR(30)
...全文
43 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2011-07-21
  • 打赏
  • 举报
回复
1、不会自动生成,使用sys_guid()。
2、禁用外键约束:alter table 表名 disable constraint 约束名。
BenChiM888 2011-07-21
  • 打赏
  • 举报
回复

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

qwpacs 2011-07-21
  • 打赏
  • 举报
回复
还有,清空数据时,关系该怎么样禁用?
qwpacs 2011-07-21
  • 打赏
  • 举报
回复
楼上兄弟,insert into 表时不用 sys_guid()吗?它会不会自动生成啊?
BenChiM888 2011-07-21
  • 打赏
  • 举报
回复

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

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧