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