为提高查询速度,经常为表建分区,但如何修改表中某条记录的分区呢?
如表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原来的数据,也可以实现对分区关键字的更改。
原文:http://www.cnblogs.com/isoftware/p/3763728.html