原表是整形,现在要改成带两位小数
有个oracle问题
我要修改一个字段的属性
用脚本
原来是:price number
现在改成:price number(10,2)
原表有数据
首先我必须要备份表吧.然后TRUNCATE原表
再alter ```modify 成 price number(10,2)
再insert 临时表到 原表
在删除临时表
我是这样做的~~你看一下流程
如果alert那里报错,执行到下面又删除了备份表
那我就出事故了~~
我想问大家~这个流程脚本该怎么处理
我原来是这样的
--创建临时表test1,并且备份到临时表.
CREATE table test1 as select * from test;
--删除原表数据test.
TRUNCATE TABLE test;
--修改字段成带两个小数点.
ALTER TABLE TEST MODIFY price NUMBER(10,2);
--把数据插入原表.
INSERT INTO TEST SELECT * FROM test1;
--删除临时表.
DROP TABLE TEST1;
--提交
COMMIT;
请大家帮我出出主意...谢谢了
你的目的是写个脚本执行你说的操作把!
如果是在linux/Unix环境下可以这样
vi execute.sh
sqlplus username/password << EOF
CREATE table test1 as select * from test;
TRUNCATE TABLE test;
ALTER TABLE TEST MODIFY price NUMBER(10,2);
INSERT INTO TEST SELECT * FROM test1;
DROP TABLE TEST1;
COMMIT;
quit
EOF
exit 0
脚本这么写肯定是没错的,至于可行与否要结合生产环境的实际情况来判断,例如你要是想删除一张千万级的大表,那么INSERT INTO TEST SELECT * FROM test1这语句必定会造成长事务。所以你要结合实际情况,如果有其他需求也请在问题上写明
oracle10g以上版本有回收站机制recyclebin,你看看你的数据库是否开启回收站功能就可以了,drop的表可以在回收站中恢复。具体方法查查资料就行了,网上很多
楼上的方法的可行情况是数据库本身就在闪回模式下,要是搂住没开闪回,那么又怎么特意重启到数据库到mount模式下开启闪回呢?