Todos los productos
Search
Centro de documentos

Tablestore:Columna de clave principal con incremento automático

Última actualización: Sep 03, 2026

Este tema explica cómo configurar una columna de clave principal con incremento automático para una tabla de datos mediante el SDK de .NET, así como escribir datos en dicha columna y recuperar los valores generados.

Notas de uso

Los valores con incremento automático generados para una columna de este tipo son únicos y estrictamente incrementales en la clave de partición. Sin embargo, no se garantiza que sean consecutivos.

Requisitos previos

Initialize a Tablestore Client

Configurar una columna de clave principal con incremento automático

Al crear una tabla de datos, configure una columna de clave principal que no sea de partición como columna con incremento automático. En las tablas de datos existentes no es posible configurar columnas con incremento automático.

Nota

Solo las columnas de clave principal de tipo entero que no sean de partición pueden configurarse como columnas con incremento automático. Una tabla de datos admite, como máximo, una columna con incremento automático. Los valores generados para esta columna son enteros largos con signo de 64 bits.

Código de ejemplo

El código de ejemplo a continuación crea una tabla de datos llamada test_table. La clave principal de la tabla incluye la clave de partición id y la columna con incremento automático 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}");
    }
}

Escribir datos

Cuando escriba datos en una columna con incremento automático, establezca el valor de la columna como un marcador de posición. Para recuperar el valor con incremento automático generado y utilizarlo en consultas y actualizaciones, configure el tipo de retorno de RowPutChange como ReturnType.RT_PK.

Código de ejemplo

El código de ejemplo a continuación escribe una fila de datos en la tabla test_table, y obtiene e imprime la información de la clave principal de la fila escrita.

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