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 (必須) |
|
自動インクリメントプライマリキー列の名前。 |
|
Type (必須) |
|
このパラメーターを |
|
Option (必須) |
|
このパラメーターを |
書き込み設定
PutRowChange には、自動インクリメントプライマリキー列に関連する次のパラメーターが含まれます。
|
名前 |
型 |
説明 |
|
PrimaryKey (必須) |
|
行のプライマリキー。 |
|
Condition (必須) |
|
行の存在条件。自動インクリメント書き込みの場合、このパラメーターを |
|
ReturnType (任意) |
|
戻り値の型。デフォルト値: |
レスポンス
PutRowResponse の次のフィールドは、自動インクリメントプライマリキー列に直接関連します。
|
フィールド |
型 |
説明 |
|
|
|
書き込まれた行の完全なプライマリキー。このフィールドは |