首页 > 数据库 > > SQL语法-ALTER TABLE PARTITION
修改表分区,包括增删分区、切割分区、合成分区,以及修改分区属性等。
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
action [, ... ];
move_clause |
exchange_clause |
row_clause |
merge_clause |
modify_clause |
split_clause |
add_clause |
drop_clause
MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacenameexchange_clause子语法用于把普通表的数据迁移到指定的分区。
EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) }
WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )}
[ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ]
进行交换的普通表和分区必须满足如下条件:
完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。
{ ENABLE | DISABLE } ROW MOVEMENT
MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name
[ TABLESPACE tablespacename ]
MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES }
SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause }指定切割点split_point_clause的语法为。AT ( partition_value ) INTO ( PARTITION partition_name [ TABLESPACE tablespacename ] , PARTITION partition_name [ TABLESPACE tablespacename ] )

INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) }PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } [, ...] )
[ TABLESPACE tablespacename ]
PARTITION partition_name {
{START(partition_value) END (partition_value) EVERY (interval_value)} |
{START(partition_value) END ({partition_value | MAXVALUE})} |
{START(partition_value)} |
{END({partition_value | MAXVALUE})}
} [TABLESPACE tablespace_name]
ADD {partition_less_than_item | partition_start_end_item}
DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) }修改表分区名字的语法。
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )}
RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name;
分区表名。
取值范围:已存在的分区表名。
分区名。
取值范围:已存在的分区名。
指定分区要移动到哪个表空间。
取值范围:已存在的表空间名。
分区键值。
通过PARTITION FOR ( partition_value [, ...] )子句指定的这一组值,可以唯一确定一个分区。
取值范围:需要进行重命名的分区的分区键的取值范围。
设置该分区上的所有索引不可用。
重建该分区上的所有索引。
行迁移开关。
如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。
取值范围:
默认是关闭状态。
进行迁移的普通表的名称。
取值范围:已存在的普通表名。
在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。
取值范围:
默认是WITH状态。
由于检查比较耗时,特别是当数据量很大的情况下更甚。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上WITHOUT来指明不进行检查。
在VALIDATION是WITH状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。

只有在VALIDATION是WITH状态时,才可以指定VERBOSE。
分区的新名字。
取值范围:字符串,要符合标识符的命名规范。
请参考CREATE TABLE PARTITION的示例。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3122664/ ,如需转载,请注明出处,否则将追究法律责任。