表不重建,而扩充其中的一个字符地段加一位,怎么加

[复制链接]
查看11 | 回复7 | 2008-10-24 13:18:47 | 显示全部楼层 |阅读模式
一张数据表,例如table01,字段如下
ame TypeNullable Default Comments
---- ----------- -------- ------- --------
ACHAR(2)

BCHAR(2)

CVARCHAR2(5) Y

DVARCHAR2(8) Y

现在要改成
ame TypeNullable Default Comments
---- ----------- -------- ------- --------
ACHAR(2)

BCHAR(3)

CVARCHAR2(5) Y

DVARCHAR2(8) Y

只是其中的一个字段扩充了1位,变成CHAR(3) .
现在表中数据比较多,我想保存这些数据,只是在表的基础上把该字段扩充一位,而表中数据不发生变化,怎么做??
可以用的工具是PL/SQL DEVELOPER连接数据库
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
alter table table01 modify b char(3);
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
SQL> create table test1(f1 char(1));
Table created.
SQL> insert into test1 values('1');
1 row created.
SQL> commit;
Commit complete.
SQL> alter table test1 modify f1 char(2);
Table altered.
SQL> desc test1;
Name
Null?Type
----------------------------------------------------- -------- ------------------------------------
F1
CHAR(2)
SQL> select * from test1;
F1
--
1
SQL> alter table test1 modify f1 char(1);
alter table test1 modify f1 char(1)

*
ERROR at line 1:
ORA-01441: cannot decrease column length because some value is too big
SQL> delete from test1;
1 row deleted.
SQL> alter table test1 modify f1 char(1);
Table altered.
SQL>
能改大,但是如果非空 不能改小
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
用char比较麻烦,每个记录都要修改,varchar不需要
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
最好是改成varchar2
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
如果使用pl/sql development的话只要选中表名,右键edit,然后在columns中找到你要修改的变量,将2改成3,然后apple一下 , 本人用过。 请指点。
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
最初由 Laurence.li 发布
[B]最好是改成varchar2 [/B]

把长度搞大点
回复

使用道具 举报

千问 | 2008-10-24 13:18:47 | 显示全部楼层
改大可以的,但是改小就困难啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行