首页 > 代码库 > 如何更新分区关键字

如何更新分区关键字

如何更新分区关键字 [原创 2008-8-7 10:51:14]   
我顶 字号:  
 

为提高查询速度,经常为表建分区,但如何修改表中某条记录的分区呢?

如表A中,有个分区关键字为area,当update时,会报错:

Ora-14402 更新分区关键字列将导致分区的更改。

解决办法如下:

1、执行如下命令,使表A允许记录转移到其他分区:

alter table A enable row movement;

2、进行修改,就不会报错了。

select * from A where emid=’001’  for update 
3、修改完毕后,执行如下命令,使表A不允许记录转移到其他分区

alter table A  disable row movement;

 

执行以上三步就可以了,但是修改之后对我们有何影响呢?影响就是,记录的rowid发生了变化,其实oracle后台自动会将原来的rowid记录delete掉,然后在insert一条新记录,若业务中关联rowid的可就要注意了。通过原理,其实也可以先insert一条新数据,然后delete原来的数据,也可以实现对分区关键字的更改。