全部产品
Search
文档中心

Tablestore:Konfigurasikan kolom kunci utama auto-increment

更新时间:Jul 24, 2025

Topik ini menjelaskan cara mengonfigurasi kolom kunci utama auto-increment untuk tabel, menulis data ke kolom auto-increment, dan mendapatkan nilai auto-increment yang dihasilkan menggunakan Tablestore SDK for Go.

Pertimbangan

Nilai auto-increment yang dihasilkan untuk kolom auto-increment bersifat unik dan secara ketat monoton meningkat pada tingkat kunci partisi, tetapi tidak dijamin berurutan.

Prasyarat

Inisialisasi instance OTSClient.

Konfigurasikan kolom kunci utama auto-increment

Anda dapat mengatur kolom kunci utama non-partisi menjadi auto-increment saat membuat tabel, tetapi tidak dapat melakukannya untuk tabel yang sudah ada.

Catatan

Hanya kolom kunci utama integer non-partisi yang dapat menjadi kolom auto-increment. Sebuah tabel dapat memiliki paling banyak satu kolom auto-increment, yang menghasilkan nilai integer bertanda 64-bit.

Contoh kode

Contoh kode berikut membuat tabel bernama test_table. Kunci utama tabel mencakup kunci partisi id dan kolom auto-increment incr.

func CreateTableSample(client *tablestore.TableStoreClient) {
    tableMeta := new(tablestore.TableMeta)
    tableMeta.TableName = "test_table"
    tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)
    tableMeta.AddPrimaryKeyColumnOption("incr", tablestore.PrimaryKeyType_INTEGER, tablestore.AUTO_INCREMENT)

    tableOption := new(tablestore.TableOption)
    tableOption.MaxVersion = 1
    tableOption.TimeToAlive = -1

    reservedThroughput := new(tablestore.ReservedThroughput)

    createTableRequest := new(tablestore.CreateTableRequest)
    createTableRequest.TableMeta = tableMeta
    createTableRequest.TableOption = tableOption
    createTableRequest.ReservedThroughput = reservedThroughput
    _, err := client.CreateTable(createTableRequest)
    if err != nil {
        fmt.Println("Gagal membuat tabel dengan kesalahan:", err)
    } else {
        fmt.Println("Pembuatan tabel selesai.")
    }
}

Tulis data

Saat menulis data ke kolom auto-increment, Anda harus menetapkan placeholder nilai. Untuk mendapatkan nilai auto-increment yang dihasilkan untuk kueri dan pembaruan, atur tipe pengembalian putRowChange ke ReturnType_RT_PK.

Contoh kode

Contoh kode berikut menulis baris data ke tabel test_table, mendapatkan informasi kunci utama dari baris yang ditulis, dan mencetaknya.

func PutRowSample(client *tablestore.TableStoreClient) {
    // Konstruksi kunci utama
    putPrimaryKey := new(tablestore.PrimaryKey)
    putPrimaryKey.AddPrimaryKeyColumn("id", "row1")
    // Atur kolom auto-increment
    putPrimaryKey.AddPrimaryKeyColumnWithAutoIncrement("incr")

    // Konstruksi data baris untuk ditulis
    putRowChange := new(tablestore.PutRowChange)
    putRowChange.TableName = "test_table"
    putRowChange.PrimaryKey = putPrimaryKey
    putRowChange.AddColumn("col1", "val1")
    putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
    // Atur tipe pengembalian ke ReturnType_RT_PK untuk mengembalikan informasi kunci utama dari baris yang ditulis
    putRowChange.ReturnType = tablestore.ReturnType_RT_PK

    // Panggil metode putRow untuk menulis data baris
    putRowRequest := new(tablestore.PutRowRequest)
    putRowRequest.PutRowChange = putRowChange
    response, err := client.PutRow(putRowRequest)
    if err != nil {
        fmt.Println("Gagal menulis baris dengan kesalahan:", err)
    } else {
        // RequestId dan CU yang dikonsumsi
        fmt.Printf("RequestId: %s \n", response.RequestId)
        fmt.Printf("Biaya CU Baca: %d \n", response.ConsumedCapacityUnit.Read)
        fmt.Printf("Biaya CU Tulis: %d \n", 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
        fmt.Println(response.PrimaryKey)
    }
}