赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 开发参考
  5. SDK参考
  6. Node.js SDK
  7. 表操作
  8. 主键列自增

主键列自增

  • 表操作
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

设置非分区键的主键列为自增列后,在写入数据时,无需为自增列设置具体值,表格存储会自动生成自增列的值。该值在分区键级别唯一且严格递增。

前提条件

已初始化Client。具体操作,请参见初始化Client。

使用方法

  1. 创建表时,将非分区键的主键列设置为自增列。

    只有整型的主键列才能设置为自增列,系统自动生成的自增列值为64位的有符号长整型。

  2. 写入数据时,无需为自增列设置具体值,只需将相应主键指定为自增主键。

    如果需要获取写入数据后系统自动生成的自增列的值,将ReturnType设置为Primarykey,可以在数据写入成功后返回自增列的值。

    查询数据时,需要完整的主键值。通过设置PutRow、UpdateRow或者BatchWriteRow中的ReturnType为Primarykey可以获取完整的主键值。

    读取数据时,如果已记录完整的主键,您可以使用读取单行数据或者批量读取数据方式读取数据;如果未记录自增主键列的值,您可以使用范围读取数据方式按照第一个主键列确定范围读取数据。

    说明

    要更新已存在的行数据时,如果未记录自增主键列的值,请先通过GetRange接口获取要更新的行主键信息,然后再进行数据更新。

示例

主键自增列功能主要涉及创建表(CreateTable)和写数据(PutRow、UpdateRow和BatchWriteRow)两类接口。

  1. 创建表

    创建表时,只需将自增的主键属性设置为AUTO_INCREMENT。

    以下示例用于创建数据表时配置主键自增列。该表的主键为pk1(String类型)、pk2(Integer类型),其中pk1主键列为分区键,pk2主键列为自增列。

    var TableStore = require('../index.js');
    var Long = TableStore.Long;
    var client = require('./client');
    
    var tableName = "autoIncTable";
    var pk1 = "stringPK";
    var pk2 = "autoIncPK";
    
    function createTableWithAutoIncrementPk() {
        var createParams = {
            tableMeta: {
                tableName: tableName,
                primaryKey: [
                    {
                        name: pk1,
                        type: 'STRING'
                    },
                    {
                        name: pk2,
                        type: 'INTEGER',
                        option: 'AUTO_INCREMENT'//自增列,指定option为AUTO_INCREMENT。
                    },
                ]
            },
            reservedThroughput: {
                capacityUnit: {
                    read: 0,
                    write: 0
                }
            },
            tableOptions: {
                timeToLive: -1,//数据的过期时间,单位秒,-1表示数据永不过期。假如设置过期时间为一年,即为365*24*3600。
                maxVersions: 1//保存的最大版本数,设置为1表示每列上最多保存一个版本(保存最新的版本)。
            },
        };
    
        client.createTable(createParams, function (err, data) {
            if (err) {
                console.log('error:', err);
                return;
            }
            console.log('create table success');
        });
    }
  2. 写数据

    写入数据时,无需为自增列设置具体值,只需将自增列的值设置为占位符PK_AUTO_INCR。

    var TableStore = require('../index.js');
    var Long = TableStore.Long;
    var client = require('./client');
    
    var tableName = "autoIncTable";
    var pk1 = "stringPK";
    var pk2 = "autoIncPK";
    
    function putRow() {
        var putParams = {
            tableName: tableName,
            condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
            primaryKey: [
                { stringPK: 'pk1' },
                { autoIncPK: TableStore.PK_AUTO_INCR }
            ],
            attributeColumns: [
                { 'col1': 'col1val' }
            ],
            returnContent: { returnType: TableStore.ReturnType.Primarykey }
        };
    
        client.putRow(putParams, function (err, data) {
            if (err) {
                console.log('error:', err);
                return;
            }
    
            console.log('put row success,autoIncrement pk value:' + JSON.stringify(data.row.primaryKey));
        });
    
    }
相关文章

创建数据表 2025-04-22 14:23

本文将通过参数说明和示例代码为您介绍如何使用 Node.js SDK 创建数据表。在创建数据表时,您需要指定数据表的结构信息和配置信息。CU 模式(原按量模式)下高性能型实例中的数据表还可以根据需要设置预留读写吞吐量。

更新表配置 2025-04-22 14:23

本文将通过参数说明和示例代码为您介绍如何使用 Node.js SDK 更新表配置。在更新数据表时,您可以修改表的配置信息(例如数据生命周期、最大版本数、有效版本偏差等)和 Stream 配置。此外,您还可以为 CU 模式(原按量模式)下高性能型实例中数据表调整预留读写吞吐量。

列出表名称 2025-04-22 14:23

使用ListTable接口获取当前实例下已创建的所有表的表名。 前提条件

查询表描述信息 2025-04-22 14:23

使用DescribeTable接口可以查询指定表的结构、预留读/写吞吐量详情等信息。 前提条件

删除数据表 2025-04-22 14:23

使用DeleteTable接口删除当前实例下指定数据表。 注意事项 数据表删除后将无法恢复,请谨慎操作。

主键列自增 2025-04-22 14:23

设置非分区键的主键列为自增列后,在写入数据时,无需为自增列设置具体值,表格存储

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号