本文介绍 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;