Todos los productos
Search
Centro de documentos

Tablestore:Configure una columna de clave principal con incremento automático

Última actualización: Sep 03, 2026

Utilice el SDK de Tablestore para Node.js para agregar una columna de clave principal con incremento automático a una tabla de datos, escribir filas en dicha columna y recuperar los valores generados.

Requisitos previos

Antes de empezar, asegúrese de que cuenta con:

Comportamiento de la columna con incremento automático

Los valores de una columna de clave principal con incremento automático son únicos y aumentan de forma monótona, pero no necesariamente son secuenciales dentro de una partición que comparte el mismo valor de clave de partición.

Cree una tabla de datos con una columna de clave principal con incremento automático

Al crear una tabla de datos, designe una columna de clave principal que no sea clave de partición como incremento automático al establecer su option en AUTO_INCREMENT. La columna debe utilizar el tipo de dato INTEGER. Una tabla puede tener como máximo una columna de clave principal con incremento automático, y no es posible agregar esta función a una tabla existente.

Nota

Los valores de la columna de clave principal con incremento automático son enteros largos con signo de 64 bits. Solo las columnas que no son clave de partición admiten la opción AUTO_INCREMENT.

Ejemplo

A continuación se crea test_table con dos columnas de clave principal: id (clave de partición, STRING) e incr (incremento automático, INTEGER).

function createTableSample() {
    var createParams = {
        tableMeta: {
            tableName: 'test_table',
            primaryKey: [
                {
                    name: 'id',
                    type: 'STRING'       // Partition key — you provide this value on every write
                },
                {
                    name: 'incr',
                    type: 'INTEGER',
                    option: 'AUTO_INCREMENT'  // Tablestore generates this value automatically
                },
            ]
        },
        tableOptions: {
            timeToLive: -1,   // -1 means data never expires
            maxVersions: 1
        },
        reservedThroughput: {
            capacityUnit: {
                read: 0,
                write: 0
            }
        },
    };

    client.createTable(createParams, function (err, data) {
        if (err) {
            console.error('error:', err);
            return;
        }
        console.log('success:', data);
    });
}

Escritura de datos

Al escribir una fila, establezca el valor de la columna con incremento automático en TableStore.PK_AUTO_INCR, un marcador de posición que indica a Tablestore que genere el valor. Para recuperar el valor generado (por ejemplo, para usarlo en una lectura o actualización posterior), establezca returnType en TableStore.ReturnType.Primarykey dentro de returnContent.

Ejemplo

A continuación se escribe una fila en test_table e imprime la clave principal generada.

function putRowSample() {
    var putParams = {
        tableName: 'test_table',
        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
        primaryKey: [
            { id: 'row1' },
            // Use PK_AUTO_INCR as a placeholder — Tablestore replaces it with the generated value
            { incr: TableStore.PK_AUTO_INCR }
        ],
        attributeColumns: [
            { 'col1': 'val1' }
        ],
        // Return the full primary key so you can use the generated incr value in later queries
        returnContent: { returnType: TableStore.ReturnType.Primarykey }
    };

    client.putRow(putParams, function (err, data) {
        if (err) {
            console.error('error:', err);
            return;
        }

        // Request metadata and capacity units consumed
        console.log("RequestId: ", data.RequestId);
        console.log("Read CU Cost: ", data.consumed.capacityUnit.read);
        console.log("Write CU Cost: ", data.consumed.capacityUnit.write);

        // Print the generated primary key, including the auto-increment value
        // This is only returned when returnType is set to Primarykey
        if (data.row.primaryKey) {
            console.log(JSON.stringify(data.row.primaryKey));
        }
    });
}