修改分区数据问题:
1、如果修改分区列时:
修改后导致修改的行所在分区发生改变
修改后分区没有发生改变
2、修改非分区列
修改后不会导致修改行所在分区改变
第一种:导致修改后行所在分区发生变化,需要将所在表设置为 行可以移动
alter table partition_table enable row movement;
修改操作可能会导致rowid改变,所以要启动行移动(因为不同的分区属于不同的段,rowid的中包含了段信息,索引会导致rowid改变)
执行行迁移:先删除该记录,在插入该记录,相当于完成两个操作。虽然这样,oracle把它看成一个更新,不会触发insert和delete触发器,只会触发update触发器。
注意:在外键约束中可能不允许,所以delete子表时不会触发delete触发器。因为行移动开销非常大。如果一个系统中频繁修改分区键,这种操作会导致大量行移动,让系统非常糟糕设计