全部產品
Search
文件中心

Tablestore:主鍵列自增

更新時間:Aug 12, 2026

Go SDK 可在建立資料表時將非分區主鍵列配置為自增列,並在寫入資料時擷取服務端產生的自增值。

前提條件

安裝Tablestore Go SDK並初始化用戶端。

功能說明

主鍵列自增包含配置自增列、寫入自增預留位置和擷取自增值三個步驟。

說明

只能在建立資料表時將非分區主鍵列配置為自增列。自增列必須為整數類型,每張資料表最多配置一個自增列。服務端產生的自增值為 64 位元有符號整數。

自增值在同一分區鍵內唯一且嚴格遞增,但不保證連續。主鍵列自增和局部事務不能同時使用。

配置自增主鍵列

建立資料表時,調用 AddPrimaryKeyColumnOption 並將主鍵列配置設定為 AUTO_INCREMENT

以下樣本建立 example_table 資料表,使用 user_id 作為分區鍵,使用 record_id 作為自增主鍵列。

tableMeta := &tablestore.TableMeta{TableName: "example_table"}
tableMeta.AddPrimaryKeyColumn("user_id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumnOption(
    "record_id",
    tablestore.PrimaryKeyType_INTEGER,
    tablestore.AUTO_INCREMENT,
)

request := &tablestore.CreateTableRequest{
    TableMeta:          tableMeta,
    TableOption:        &tablestore.TableOption{TimeToAlive: -1, MaxVersion: 1},
    ReservedThroughput: &tablestore.ReservedThroughput{},
}

_, err := client.CreateTable(request)
if err != nil {
    log.Fatal(err)
}

建立資料表後,等待資料表載入完成再寫入資料。

寫入資料並擷取自增值

寫入資料時,調用 AddPrimaryKeyColumnWithAutoIncrement 為自增列設定預留位置,並調用 SetReturnPk 使響應返回包含自增值的完整主鍵。自增主鍵寫入的行存在性條件必須設定為 RowExistenceExpectation_IGNORE

以下樣本寫入一行資料並擷取服務端產生的 record_id 值。

primaryKey := &tablestore.PrimaryKey{}
primaryKey.AddPrimaryKeyColumn("user_id", "user-a")
primaryKey.AddPrimaryKeyColumnWithAutoIncrement("record_id")

change := &tablestore.PutRowChange{
    TableName:  "example_table",
    PrimaryKey: primaryKey,
}
change.AddColumn("status", "created")
change.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
change.SetReturnPk()

response, err := client.PutRow(&tablestore.PutRowRequest{PutRowChange: change})
if err != nil {
    log.Fatal(err)
}

fmt.Println(response.PrimaryKey)

參數說明

自增主鍵列

PrimaryKeySchema 包含以下與主鍵列自增相關的參數。

名稱

類型

說明

Name(必選)

string

自增主鍵列名稱。

Type(必選)

PrimaryKeyType

必須設定為 PrimaryKeyType_INTEGER

Option(必選)

PrimaryKeyOption

必須設定為 AUTO_INCREMENT

寫入配置

PutRowChange 包含以下與主鍵列自增相關的參數。

名稱

類型

說明

PrimaryKey(必選)

*PrimaryKey

行主鍵。自增列必須通過 AddPrimaryKeyColumnWithAutoIncrement 設定預留位置。

Condition(必選)

*RowCondition

行存在性條件。主鍵列自增寫入必須設定為 RowExistenceExpectation_IGNORE

ReturnType(可選)

ReturnType

傳回型別。預設值為 ReturnType_RT_NONE,不返回主鍵資訊;調用 SetReturnPk 設定為 ReturnType_RT_PK 後,響應返回包含自增值的完整主鍵。

傳回值

PutRowResponse 中與主鍵列自增直接相關的返回欄位如下。

欄位

類型

說明

PrimaryKey

PrimaryKey

寫入行的完整主鍵。僅設定 ReturnType_RT_PK 時返回,其中包含服務端產生的自增值。