全部产品
Search
文档中心

表格存储:主键列自增

更新时间:Jul 22, 2026

Java SDK 可在创建数据表时将非分区主键列配置为自增列,并在写入数据时获取服务端生成的自增值。

前提条件

  • 安装Tablestore Java SDK并初始化客户端。

  • 使用 Tablestore Java SDK 4.2.0 或更高版本。

功能说明

主键列自增包含配置自增列、写入占位符和获取自增值三个步骤。

说明

只能在创建数据表时将非分区主键列配置为自增列。自增列必须为整数类型,每张数据表最多配置一个自增列。服务端生成的自增值为 64 位有符号整数。

自增值在同一分区键内唯一且严格递增,但不保证连续。

设置主键列自增

创建数据表时,将非分区主键列的 option 设置为 PrimaryKeyOption.AUTO_INCREMENT

以下示例创建 example_table 数据表。该表使用 id 作为分区键,使用 incr 作为自增主键列。

说明

创建数据表后,等待数据表加载完成再写入数据。

String tableName = "example_table";

TableMeta tableMeta = new TableMeta(tableName);
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema(
        "incr", PrimaryKeyType.INTEGER, PrimaryKeyOption.AUTO_INCREMENT));

TableOptions tableOptions = new TableOptions(-1, 1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);

写入数据并获取自增值

写入数据时,将自增列值设置为 PrimaryKeyValue.AUTO_INCREMENT。需要获取生成的自增值时,将返回类型设置为 ReturnType.RT_PK;否则响应不返回主键信息。

以下示例向 example_table 写入一行数据,并从响应中获取 incr 列的自增值。

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("partition-a"));
primaryKeyBuilder.addPrimaryKeyColumn("incr", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange("example_table", primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("example-value"));
rowPutChange.setReturnType(ReturnType.RT_PK);

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
long generatedValue = response.getRow().getPrimaryKey()
        .getPrimaryKeyColumn("incr").getValue().asLong();
System.out.println("Generated value: " + generatedValue);

参数说明

PrimaryKeySchema 参数

以下参数用于定义自增主键列。

名称

类型

说明

name(必选)

String

自增主键列名称。

type(必选)

PrimaryKeyType

自增主键列的数据类型,必须设置为 INTEGER

option(必选)

PrimaryKeyOption

主键列配置,必须设置为 AUTO_INCREMENT

RowPutChange 参数

以下参数控制自增列写入和返回结果。

名称

类型

说明

primaryKey(必选)

PrimaryKey

写入行的主键。主键列的名称、顺序和类型必须与数据表的主键结构一致;自增列值必须设置为 PrimaryKeyValue.AUTO_INCREMENT

returnType(可选)

ReturnType

返回类型,默认为 RT_NONE,不返回主键信息。设置为 RT_PK 时,响应返回包含自增值的完整主键。

返回值

PutRowResponse 中与主键列自增直接相关的返回字段如下。

字段

类型

说明

row

Row

通过 getRow() 获取写入行的主键信息。仅当 returnType 设置为 RT_PK 时返回,其中包含服务端生成的自增值。