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(必选) |
|
自增主键列名称。 |
|
type(必选) |
|
自增主键列的数据类型,必须设置为 |
|
option(必选) |
|
主键列配置,必须设置为 |
RowPutChange 参数
以下参数控制自增列写入和返回结果。
|
名称 |
类型 |
说明 |
|
primaryKey(必选) |
|
写入行的主键。主键列的名称、顺序和类型必须与数据表的主键结构一致;自增列值必须设置为 |
|
returnType(可选) |
|
返回类型,默认为 |
返回值
PutRowResponse 中与主键列自增直接相关的返回字段如下。
|
字段 |
类型 |
说明 |
|
|
|
通过 |