全部产品
Search
文档中心

Tablestore:Kolom primary key auto-increment

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengonfigurasi kolom primary key auto-increment untuk tabel data menggunakan Tablestore SDK for Java. Topik ini juga mencakup cara menulis data ke kolom primary key auto-increment dan mengambil nilai dari kolom tersebut.

Catatan penggunaan

  • Fitur kolom primary key auto-increment didukung oleh Tablestore SDK for Java versi 4.2.0 dan yang lebih baru.

  • Nilai yang dihasilkan untuk kolom primary key auto-increment bersifat unik dan meningkat secara monoton dalam satu partisi, tetapi tidak selalu berurutan.

Prasyarat

Sebuah klien harus sudah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.

Konfigurasikan kolom primary key auto-increment

Saat membuat tabel data, Anda dapat menetapkan kolom primary key yang bukan kunci partisi sebagai kolom primary key auto-increment. Namun, kolom primary key auto-increment tidak dapat ditambahkan ke tabel data yang sudah ada.

Catatan

Hanya kolom primary key bertipe Integer yang dapat dikonfigurasi sebagai kolom primary key auto-increment. Setiap tabel data hanya dapat memiliki satu kolom primary key auto-increment, dengan nilai yang dihasilkan berupa bilangan bulat panjang bertanda 64-bit.

Contoh kode

Contoh kode berikut menunjukkan cara membuat tabel data bernama test_table. Dalam contoh ini, tabel data memiliki kunci partisi bernama id dan kolom primary key auto-increment bernama incr.

public static void createTableTest(SyncClient client) {
    TableMeta tableMeta = new TableMeta("test_table");
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("id", PrimaryKeyType.STRING));
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("incr", PrimaryKeyType.INTEGER, PrimaryKeyOption.AUTO_INCREMENT));

    TableOptions tableOptions = new TableOptions();
    tableOptions.setMaxVersions(1);
    tableOptions.setTimeToLive(-1);

    CreateTableRequest createTableRequest = new CreateTableRequest(tableMeta, tableOptions);
    client.createTable(createTableRequest);
}

Tulis data

Saat menulis data ke tabel data yang berisi kolom primary key auto-increment, cukup tetapkan nilai kolom primary key auto-increment sebagai placeholder. Jika Anda ingin mendapatkan nilai yang dihasilkan untuk kolom primary key auto-increment guna operasi kueri atau pembaruan selanjutnya, atur tipe pengembalian rowPutChange ke RT_PK.

Contoh kode

Contoh kode berikut menunjukkan cara menulis baris data ke tabel test_table, serta mendapatkan dan mencetak informasi primary key dari baris tersebut:

public static void putRowTest(SyncClient client) {
    // Konstruksi primary key.
    PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
    primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("row1"));
    // Tetapkan nilai kolom primary key auto-increment ke placeholder.
    primaryKeyBuilder.addPrimaryKeyColumn("incr", PrimaryKeyValue.AUTO_INCREMENT);
    PrimaryKey primaryKey = primaryKeyBuilder.build();

    // Konstruksi data baris untuk ditulis.
    RowPutChange rowPutChange = new RowPutChange("test_table", primaryKey);
    rowPutChange.addColumn("col1", ColumnValue.fromString("val1"));
    // Atur tipe pengembalian ke RT_PK untuk mengembalikan informasi primary key dari baris yang ditulis.
    rowPutChange.setReturnType(ReturnType.RT_PK);

    // Panggil metode putRow untuk menulis baris data.
    PutRowRequest putRowRequest = new PutRowRequest();
    putRowRequest.setRowChange(rowPutChange);
    PutRowResponse putRowResponse = client.putRow(putRowRequest);

    // Tampilkan Id permintaan dan konsumsi CU baca/tulis.
    System.out.println("RequestId: " + putRowResponse.getRequestId());
    System.out.println("Biaya CU Baca: " + putRowResponse.getConsumedCapacity().getCapacityUnit().getReadCapacityUnit());
    System.out.println("Biaya CU Tulis: " + putRowResponse.getConsumedCapacity().getCapacityUnit().getWriteCapacityUnit());

    // Dapatkan dan cetak informasi primary key yang dikembalikan. Jika tipe pengembalian tidak diatur ke RT_PK, informasi primary key tidak akan dikembalikan.
    Row row = putRowResponse.getRow();
    if(row != null)
        System.out.println(row.getPrimaryKey().toString());
}