大家看看这个字段的属性如何修改

大道如海 2004-06-18 04:12:22
假设我用如下SQL建立了一个表
CREATE TABLE classes(
department char(3),
course char(3),
description varchar2(2000),
room_id number(5),
CONSTRAINT classes_department_course
PRIMARY KEY (department,course),
CONSTRINT classes_room_id
FOREIGN KEY (room_id) REFERENCES rooms (room_id)
);

当我输入了10000条记录的时候,发现我在建立表的时候把course的类型搞错了.
其实course应该是number(3)型.
我现在如何在不破坏数据的情况下修改字段,而且各约束也不能改变.

...全文
67 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smallcrocodile 2004-07-07
  • 打赏
  • 举报
回复
上面的方法可行,但是不保险,运气了
洪十二 2004-07-07
  • 打赏
  • 举报
回复
UP飘兄.
dinya2003 2004-07-07
  • 打赏
  • 举报
回复
可以先
select to_numer(a.course)) from table a
看看,.
LGQDUCKY 2004-07-07
  • 打赏
  • 举报
回复
如果有数据
alter table classes modify(course number(3));
语句不行,按照我的方法:

先备份表

create table classes_bak as select * from classes;

再删除表

drop table classes;

重新建立表

CREATE TABLE classes(
department char(3),
course number(3),
description varchar2(2000),
room_id number(5),
CONSTRAINT classes_department_course
PRIMARY KEY (department,course),
CONSTRINT classes_room_id
FOREIGN KEY (room_id) REFERENCES rooms (room_id)
);

把数据恢复回来

insert into classes select * from classes_bak;

检查数据没有错误,把临时表删除。
drop table classes_bak;
freddy2003 2004-07-07
  • 打赏
  • 举报
回复
alter table classes modify(course number(3));
dinya2003 2004-07-07
  • 打赏
  • 举报
回复
alter table classes modify(course number(3));
LGQDUCKY 2004-07-07
  • 打赏
  • 举报
回复
首先,你的字段course char(3),里
的记录是不是都是规则(也就是都可以转化为数字类型),
大道如海 2004-07-07
  • 打赏
  • 举报
回复
问了好久了,没人回答.我想结帖了,前10名每人每年10分.

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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