Tous les produits
Search
Centre de documentation

Tablestore:Configure an auto-increment primary key column

Dernière mise à jour :Aug 18, 2026

Utilisez le SDK Tablestore pour Node.js afin d'ajouter une colonne de clé primaire à incrémentation automatique à une table de données, d'y écrire des lignes et de récupérer les valeurs générées.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Comprendre le comportement des colonnes à incrémentation automatique

Les valeurs des colonnes de clé primaire à incrémentation automatique sont uniques et augmentent de manière monotone, mais elles ne sont pas nécessairement séquentielles au sein d'une partition partageant la même valeur de clé de partition.

Créer une table de données avec une colonne de clé primaire à incrémentation automatique

Lors de la création d'une table de données, définissez l'option option d'une colonne de clé primaire (autre que la clé de partition) sur AUTO_INCREMENT pour la configurer en incrémentation automatique. La colonne doit utiliser le type de données INTEGER. Une table ne peut comporter qu'une seule colonne de clé primaire à incrémentation automatique et il est impossible d'en ajouter une à une table existante.

Remarque

Les valeurs des colonnes de clé primaire à incrémentation automatique sont des entiers longs signés de 64 bits. Seules les colonnes autres que la clé de partition prennent en charge l'option AUTO_INCREMENT.

Exemple

L'exemple suivant crée la table test_table avec deux colonnes de clé primaire : id (clé de partition, STRING) et incr (incrémentation automatique, 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);
    });
}

Écrire des données

Lors de l'écriture d'une ligne, définissez la valeur de la colonne à incrémentation automatique sur TableStore.PK_AUTO_INCR — un espace réservé indiquant à Tablestore de générer la valeur. Pour récupérer la valeur générée (par exemple, pour l'utiliser dans une lecture ou une mise à jour ultérieure), définissez returnType sur TableStore.ReturnType.Primarykey dans returnContent.

Exemple

L'exemple suivant écrit une ligne dans la table test_table et affiche la clé primaire générée.

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));
        }
    });
}