表中有数据时不能改结构,除非是将列加宽或者列没有数据,下面提供一个方法: 1、表那一列和主键备份到一个表中,如源表为maintab,主键为pk,要修改的列为mcol,则备份方法为: SQL> CREATE TABLE bak_maintab AS SELECT pk,mcol FROM maintab;2、清空要修改的列 UPDATE maintab SET mcol=''; COMMIT;3、修改表结构 ALTER TABLE maintab MODIFY (mcol NUMBER(10));4、用备份出来的数据更新maintab: UPDATE maintab m SET mcol=(SELECT mcol FROM bak_maintab WHERE pk=m.pk) WHERE pk IN(SELECT pk FROM bak_maintab); COMMIT; 5、检查更新后的数据 SELECT pk,mcol FROM maintab;6、删除bak_maintab; DROP TABLE bak_maintab;
1、表那一列和主键备份到一个表中,如源表为maintab,主键为pk,要修改的列为mcol,则备份方法为:
SQL> CREATE TABLE bak_maintab AS SELECT pk,mcol FROM maintab;2、清空要修改的列
UPDATE maintab SET mcol='';
COMMIT;3、修改表结构
ALTER TABLE maintab MODIFY (mcol NUMBER(10));4、用备份出来的数据更新maintab:
UPDATE maintab m
SET mcol=(SELECT mcol FROM bak_maintab
WHERE pk=m.pk)
WHERE pk IN(SELECT pk FROM bak_maintab);
COMMIT;
5、检查更新后的数据
SELECT pk,mcol FROM maintab;6、删除bak_maintab;
DROP TABLE bak_maintab;