设置非分区键的主键列为自增列后,在写入数据时,无需为自增列设置具体值,表格存储会自动生成自增列的值。该值在分区键级别唯一且严格递增。
特点
主键列自增具有如下特点:
-
自增列的值在分区键级别唯一且严格递增,但不保证连续。
-
自增列的数据类型为64位的有符号长整型。
-
自增列是数据表级别的,同一个实例下可以有自增列或者非自增列的数据表。
无论是否使用主键列自增功能,不影响条件更新的规则,条件更新的规则请参见条件更新。
场景
主键列自增功能适用于为电商网站的商品ID、大型网站的用户ID、论坛帖子的ID、聊天工具的消息ID等生成唯一标识。
应用案例请参见如何优化高并发IM系统架构。
注意事项
-
每张数据表最多只能设置一个主键列为自增列,主键中的分区键不能设置为自增列。
-
只能在创建数据表时指定自增列,对于已存在的数据表不能创建自增列。
-
只有整型的主键列才能设置为自增列,系统自动生成的自增列值为64位的有符号长整型。
-
属性列不能设置为自增列。
-
主键自增列功能和局部事务功能不能同时使用。
-
写入数据到带有自增主键列的表时,请务必返回并记录自增列的值,以便用于后续数据更新或者数据读取。
接口
主键列自增的相关接口说明请参见下表。
|
接口 |
说明 |
|
创建数据表时,请设置非分区键的主键列为自增列,否则无法使用主键列自增功能。 |
|
|
数据表创建后,不能通过UpdateTable修改数据表的主键列为自增列。 |
|
|
写入数据时,无需为自增列设置具体值,表格存储会自动生成自增列的值。 通过设置ReturnType为RT_PK,可以获取完整的主键值,完整的主键值可以用于GetRow查询数据。 重要
要更新已存在的行数据时,如果未记录自增主键列的值,请先通过GetRange接口获取要更新的行主键信息,然后再进行数据更新。 |
|
|
使用GetRow时需要完整的主键值,通过设置PutRow、UpdateRow或者BatchWriteRow中的ReturnType为RT_PK可以获取完整的主键值。 重要
写入数据时,如果未记录自增主键列的值,您可以使用范围读取数据按照第一个主键列确定范围读取数据。更多信息,请参见范围读取数据。 |
|
使用方式
使用控制台
使用命令行工具
使用SDK
计费说明
使用主键列自增功能不影响现有计费规则,返回的主键列数据不会额外消耗读CU。