虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的 *** 作风险很大。
如果是误 *** 作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。
如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键):
merge into xxx aa
using (select pk_col from xxx) bb
on (aa.pk_col=bb.pk_col)
when matched then
update set aa.datatype=66 where aa.datatype is null
添加列的语法是:alter table table_name add (w number(4),y number(4))
但是你是无法控制新增的列在1,2,3,4,5前面。只能采用变通的方法;
1 如上先把列添加上。
2 然后
create table table_name1 select (A,B,C...,W,Y,1,2,3,4,5) from table_name
3 drop table table_name
4 alter table table_name1 rename table_name
------------------------------补充------------------------------------
就我所了解看来,你必须这样做。
你的列很多?有多少?有1000个吗?
表中列的顺序并不重要。你如果非要达到这种效果那么不得不付出代价。比如说:像上面将每个列都写上去。。。
数据不会丢失。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)