列表分片子句

使用 List Fragment 子句指定存储在同一分片中分片键值的列表。分配给每个分片的行必须符合定义此分片的分片键值(或以逗号分隔的分片键值列表中的一个值)。

List Fragment 子句
List Expression 子句
元素 描述 限制 语法
const_expr 为要存储的分片定义分片键值列表的常量表达式 必须是带引号的字符串或字符值。列表中的每个值在同一对象的分片列表中必须是唯一的。 常量表达式
dbspace 存储分片的 dbspace 最多只能指定 2,048 个dbspaces。这些所有的 dbspaces 必须具有相同的页大小。 标识符
partition 此处为分片声明的名称 在同一对象的分片的名称中必须是唯一的。如果表和它的索引使用相同的列表分片存储策略,则每个索引分片必须具有与相应表分片一样的名称。 标识符

在基于列表存储分布中的 REMAINDER 和 NULL 分片

对于任何分片,可以可选地定义 REMAINDER 分片来存储不符合分片键值列表的行。

可以可选地定义 NULL 分片,以存储具有缺失分片键数据的行。做法为在该分片的列表表达式子句的 VALUES 关键字之后只指定 IS NULL NULL。您不能在包含其它表达式的表达式列表中包含 NULLIS NULL 。(在此上下文中,NULLIS NULL 是关键字同义词。)
如果没有定义 NULL 分片,且有一个操作试图插入缺少分片键数据的行,则其结果取决于 REMAINDER 分片是否存在:
  • 如果定义了 REMAINDER 分片,则行存储在 REMAINDER 分片中。
  • 如果没有定义 REMAINDER 分片,则数据库服务器发出异常。

如果没有定义 REMAINDER 分片,而 INSERT 、UPDATE 、MERGE 或其它 DML 操作试图存储一个分片键与所有分片的列表值不符合的行,则数据库服务器发出异常。

当您为表或索引定义一个基于列表的分区方案时,该分片列表最多只能包含一个 NULL 分片,和一个 REMAINDER 分片。

如果 BY LIST 分区的表没有 NULL 或 REMAINDER 分片,但是您紧跟地决定需要这些分片或需要其中一个,可以通过使用 ALTER FRAGMENT 语句的 ADD 选项在分片列表中添加 NULL 分片或 REMAINDER 分片(或者两者都添加)。有关更多信息,请参阅 ADD 子句

1 该路径只能使用一次