Topik ini menjelaskan cara mengonfigurasi kolom kunci utama auto-increment untuk tabel data menggunakan Tablestore .NET SDK, serta cara menulis data ke kolom tersebut dan mengambil nilai yang dihasilkan.
Catatan penggunaan
Nilai auto-increment yang dihasilkan untuk kolom auto-increment bersifat unik dan selalu bertambah secara ketat pada tingkat kunci partisi. Namun, tidak dijamin bahwa nilainya berurutan.
Prasyarat
Konfigurasikan kolom kunci utama auto-increment
Anda dapat mengonfigurasi kolom kunci utama non-partisi sebagai kolom auto-increment saat membuat tabel data. Untuk tabel data yang sudah ada, Anda tidak dapat mengonfigurasi kolom auto-increment.
Hanya kolom kunci utama non-partisi bertipe integer yang dapat dikonfigurasi sebagai kolom auto-increment. Sebuah tabel data hanya dapat memiliki satu kolom auto-increment. Nilai yang dihasilkan untuk kolom auto-increment adalah bilangan bulat panjang bertanda 64-bit.
Contoh kode
Contoh kode berikut membuat tabel data bernama test_table. Kunci utama tabel mencakup kunci partisi id dan kolom auto-increment 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("Pembuatan tabel berhasil.");
}
catch (Exception ex)
{
Console.WriteLine($"Pembuatan tabel gagal, pengecualian:{ex.Message}");
}
}Tulis data
Saat menulis data ke kolom auto-increment, atur nilai kolom sebagai placeholder. Untuk mengambil nilai auto-increment yang dihasilkan untuk kueri dan pembaruan, atur tipe pengembalian RowPutChange ke ReturnType.RT_PK.
Contoh kode
Contoh kode berikut menulis satu baris data ke tabel test_table, serta mendapatkan dan mencetak informasi kunci utama dari baris data yang ditulis.
public static void PutRowSample(OTSClient client)
{
try
{
// Konstruksi kunci utama
PrimaryKey primaryKey = new PrimaryKey
{
{ "id", new ColumnValue("row1") },
{ "incr", ColumnValue.AUTO_INCREMENT }
};
// Konstruksi data baris untuk ditulis
AttributeColumns attribute = new AttributeColumns
{
{ "col1", new ColumnValue("val1") }
};
PutRowRequest request = new PutRowRequest("test_table", new Condition(RowExistenceExpectation.IGNORE), primaryKey, attribute);
// Atur tipe pengembalian ke ReturnType.RT_PK untuk mengembalikan informasi kunci utama dari baris data yang ditulis
request.RowPutChange.ReturnType = ReturnType.RT_PK;
// Panggil metode PutRow untuk menulis data baris
PutRowResponse response = client.PutRow(request);
// RequestId dan CU yang dikonsumsi
Console.WriteLine("RequestId: " + response.RequestID);
Console.WriteLine("Biaya CU Baca: " + response.ConsumedCapacityUnit.Read);
Console.WriteLine("Biaya CU Tulis: " + response.ConsumedCapacityUnit.Write);
// Dapatkan dan cetak informasi kunci utama yang dikembalikan. Jika tipe pengembalian tidak diatur ke ReturnType.RT_PK, informasi kunci utama tidak dikembalikan secara default
Console.WriteLine(response.Row.PrimaryKey.ToString());
}
catch (Exception ex)
{
Console.WriteLine($"Penulisan Baris gagal, pengecualian:{ex.Message}");
}
}