Tous les produits
Search
Centre de documentation

Tablestore:Colonne de clé primaire à incrémentation automatique

Dernière mise à jour :Aug 18, 2026

Cette rubrique explique comment configurer une colonne de clé primaire à incrémentation automatique pour une table de données à l'aide du SDK .NET, ainsi que comment écrire des données dans cette colonne et récupérer les valeurs générées.

Remarques d'utilisation

Les valeurs générées automatiquement pour une colonne à incrémentation automatique sont uniques et strictement croissantes au niveau de la clé de partition. Toutefois, elles ne sont pas nécessairement consécutives.

Prérequis

Initialiser un client Tablestore

Configurer une colonne de clé primaire à incrémentation automatique

Lors de la création d'une table de données, vous pouvez définir une colonne de clé primaire (autre que la clé de partition) comme colonne à incrémentation automatique. Il est impossible de configurer des colonnes à incrémentation automatique sur des tables de données existantes.

Remarque

Seules les colonnes de clé primaire non partitionnées de type entier peuvent être configurées comme colonnes à incrémentation automatique. Une table de données peut comporter au maximum une colonne à incrémentation automatique. Les valeurs générées pour une telle colonne sont des entiers longs signés 64 bits.

Exemple de code

L'exemple de code suivant crée une table de données nommée test_table. La clé primaire de la table comprend la clé de partition id et la colonne à incrémentation automatique incr.

public static void CreateSample(OTSClient client)
{
    try
    {
        PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
        {
            { "id", ColumnValueType.String },
            { "incr", ColumnValueType.Integer, PrimaryKeyOption.AUTO_INCREMENT}
        };
        TableMeta tableMeta = new TableMeta("test_table", primaryKeySchema);
        CapacityUnit reservedThroughput = new CapacityUnit(0, 0);

        CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput);
        client.CreateTable(request);
        Console.WriteLine("Create table succeeded.");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Create table failed, exception:{ex.Message}");
    }
}

Écrire des données

Pour écrire des données dans une colonne à incrémentation automatique, définissez la valeur de la colonne sur un espace réservé. Pour récupérer la valeur d'incrémentation automatique générée lors des requêtes et des mises à jour, définissez le type de retour de RowPutChange sur ReturnType.RT_PK.

Exemple de code

L'exemple de code suivant écrit une ligne de données dans la table test_table, puis récupère et affiche les informations de clé primaire des données de ligne écrites.

public static void PutRowSample(OTSClient client)
{
    try
    {
        // Construct the primary key
        PrimaryKey primaryKey = new PrimaryKey
        {
            { "id", new ColumnValue("row1") },
            { "incr",  ColumnValue.AUTO_INCREMENT }
        };

        // Construct the row data to write
        AttributeColumns attribute = new AttributeColumns
        {
            { "col1", new ColumnValue("val1") }
        };
        PutRowRequest request = new PutRowRequest("test_table", new Condition(RowExistenceExpectation.IGNORE), primaryKey, attribute);
        // Set the return type to ReturnType.RT_PK to return the primary key information of the written row data
        request.RowPutChange.ReturnType = ReturnType.RT_PK;

        // Call the PutRow method to write the row data
        PutRowResponse response = client.PutRow(request);

        // RequestId and consumed CU
        Console.WriteLine("RequestId: " + response.RequestID);
        Console.WriteLine("Read CU Cost: " + response.ConsumedCapacityUnit.Read);
        Console.WriteLine("Write CU Cost: " + response.ConsumedCapacityUnit.Write);

        // Get and print the returned primary key information. If the return type is not set to ReturnType.RT_PK, the primary key information is not returned by default
        Console.WriteLine(response.Row.PrimaryKey.ToString());
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Put Row failed, exception:{ex.Message}");
    }
}