すべてのプロダクト
Search
ドキュメントセンター

Tablestore:自動インクリメントプライマリキー列の使用

最終更新日:Aug 12, 2026

Tablestore SDK for Go を使用して、テーブル作成時に非パーティションプライマリキー列を自動インクリメント列として設定し、データの書き込み時にサーバー生成値を取得します。

前提条件

Tablestore SDK for Go をインストールし、クライアントを初期化します。

説明

自動インクリメントプライマリキー列を使用するには、列を設定し、行の書き込み時に自動インクリメントのプレースホルダーを使用して、レスポンスから生成された値を取得します。

説明

自動インクリメント列として設定できるのは非パーティションプライマリキー列のみで、この設定はテーブル作成時にのみ指定できます。列の型は INTEGER である必要があります。各テーブルに設定できる自動インクリメント列は最大 1 つです。サーバーは符号付き 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 が指定された場合にのみ返され、サーバー生成値が含まれます。