OceanBase 数据库如何更新分区表的分区键值?

本文介绍 OceanBase 数据库 MySQL 和 Oracle 模式下更新分区表的分区键值的方法。

适用版本

OceanBaes 数据库所有版本

MySQL 模式

OceanBase 数据库的 MySQL 租户可以直接更新分区键值。

obclient> UPDATE $column SET $value_clause WHERE $where_clause;

Oracle 模式

OceanBase 数据库的 Oracle 租户中,如果直接更新分区键,可能会出现以下错误:

obclient> UPDATE $column SET $value_clause WHERE $where_clause; ORA-14402: updating partition key column would cause a partition change

这是由于 Oracle 模式中如果修改了分区键,则修改行的

rownum

会发生变化,某一行更新时,如果更新的是分区列,并且更新后的列值不属于原来的这个分区,导致出现该错误。

这种情况可以通过修改表的

ROW MOVEMENT

属性,开启了这个选项后,再更新分区键,更新分区表就会把这行从分区中删除,并加到更新后所属的分区。

obclient> ALTER TABLE $table ENABLE ROW MOVEMENT;