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

Tablestore:自動採番主キー列

最終更新日:Sep 19, 2026

パーティションキーではないプライマリキー列を自動採番列として設定すると、データ書き込み時にその列の値を指定する必要がありません。Tablestore は、各パーティションキー内で一意かつ厳密に増加する値を自動的に生成します。

機能

自動採番主キー列には以下の特性があります。

  • 自動採番列の値は、パーティションキー内で一意かつ厳密に増加しますが、連続するとは限りません。

  • 自動採番列のデータ型は、64 ビット符号付き整数です。

  • 自動採番列はデータテーブル単位で定義します。1 つのインスタンスには、自動採番列を持つデータテーブルと持たないデータテーブルの両方を含めることができます。

説明

この機能は、条件付き更新のルールには影響しません。詳細については、「条件付き更新」をご参照ください。

使用上の注意

  • 各データテーブルに設定できる自動採番主キー列は 1 つまでです。パーティションキーを自動採番列として定義することはできません。

  • 自動採番列は、データテーブルの作成時にのみ定義できます。既存のデータテーブルに追加することはできません。

  • 整数型のプライマリキー列のみを自動採番列として定義できます。システムが生成する自動採番列の値は、64 ビット符号付き整数です。

  • 属性列を自動採番列として定義することはできません。

  • 自動採番主キー列機能とローカルトランザクション機能を同時に使用することはできません。

  • 自動採番主キー列を持つテーブルにデータを書き込む場合、その後の更新や読み取りのために、生成された列の値を取得して保存する必要があります。

API オペレーション

自動採番主キー列機能に関連する API オペレーションを次の表に示します。

API

説明

CreateTable

この機能を使用するには、データテーブルの作成時に、パーティションキーではないプライマリキー列を自動採番列として定義する必要があります。

UpdateTable

データテーブルの作成後、UpdateTable API を使用してプライマリキー列を自動採番列として再定義することはできません。

PutRow

データ書き込み時に自動採番列の値を指定する必要はありません。Tablestore が自動的に値を生成します。

完全なプライマリキーを取得するには、ReturnType パラメーターを RT_PK に設定します。これにより、GetRow API でデータをクエリできます。

重要

行を更新する必要があるものの、自動採番されたプライマリキー値を保存していない場合は、まず GetRange API を使用して完全なプライマリキーを取得してから更新してください。

UpdateRow

BatchWriteRow

GetRow

GetRow API では、完全なプライマリキーが必要です。完全なプライマリキーは、PutRow、UpdateRow、または BatchWriteRow リクエストで ReturnType パラメーターを RT_PK に設定することで取得できます。

重要

データ書き込み時に自動採番主キー列の値を保存していない場合でも、最初のプライマリキー列に基づいてデータの範囲を読み取ることができます。詳細については、「データの範囲を読み取る」をご参照ください。

BatchGetRow

使用方法

コンソール

  1. 自動採番主キー列を持つデータテーブルを作成します。

    1. Tablestore コンソールにログインします。

    2. 概要 ページで、管理対象のインスタンスを探し、操作 列の インスタンスの管理 をクリックします。

    3. インスタンスの詳細 タブの テーブルリスト セクションで、テーブルの作成 をクリックします。

    4. テーブルの作成 ダイアログボックスで、[テーブル名] と [プライマリキー] を設定します。その他のパラメーターは、ビジネス要件に基づいて設定します。

      プライマリキーを設定する際、パーティションキーではないプライマリキー列の型としてauto_Incrementを選択します。

      説明

      パラメーター設定の詳細については、「データテーブルの操作」をご参照ください。

    5. 作成 をクリックします。

  2. テーブルにデータを書き込みます。

    1. インスタンスの詳細 タブの テーブルリスト セクションで、データテーブル名をクリックします。

    2. データのクエリ タブで、挿入 をクリックします。

    3. 挿入 ダイアログボックスで、プライマリキー値を入力し、必要に応じて属性列を追加します。

      自動採番列の値を入力する必要はありません。データ書き込み時にシステムが自動的に値を生成します。複数の属性列を追加するには、image アイコンを繰り返しクリックし、各列の名前、タイプ、値を設定します。

    4. OK をクリックします。

      システムに正常に書き込まれたデータが表示されます。その後の更新や読み取りのために、行の完全なプライマリキーを控えておいてください。

CLI

  1. 自動採番主キー列を持つデータテーブルを作成して使用します。

    1. create コマンドを実行してデータテーブルを作成します。詳細については、「テーブルの作成」をご参照ください。

      次の例では、mytable という名前のデータテーブルを作成します。このテーブルには、uid (文字列型) と pid (整数型) の 2 つのプライマリキー列があり、pid が自動採番列です。このテーブルのデータの有効期限はありません。

      create -t mytable --pk '[{"c":"uid", "t":"string"}, {"c":"pid", "t":"integer", "opt":"auto"}]'
    2. use --wc -t mytable コマンドを実行してデータテーブルを使用します。

  2. put コマンドを実行して行を書き込みます。詳細については、「新しいデータの挿入」をご参照ください。

    説明

    データ書き込み後、scan コマンドを実行して行を取得し、完全なプライマリキーを取得します。詳細については、「データのスキャン」または「データのエクスポート」をご参照ください。

    次の例では、最初のプライマリキー列の値が "86" で、自動採番列が null に設定された行を挿入します。この行には、name (文字列型) と country (文字列型) の 2 つの属性列も含まれます。

    put --pk '["86", null]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'

SDK

この機能は、Java、Go、Python、Node.js、.NET、PHP の各 SDK で利用できます。 このセクションでは、 Java SDK を使用した例を示します。

次の例では、example_table に行を書き込み、レスポンスから incr 列の生成された値を取得します。

PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("id", PrimaryKeyValue.fromString("partition-a"));
primaryKeyBuilder.addPrimaryKeyColumn("incr", PrimaryKeyValue.AUTO_INCREMENT);
PrimaryKey primaryKey = primaryKeyBuilder.build();

RowPutChange rowPutChange = new RowPutChange("example_table", primaryKey);
rowPutChange.addColumn("payload", ColumnValue.fromString("example-value"));
rowPutChange.setReturnType(ReturnType.RT_PK);

PutRowResponse response = client.putRow(new PutRowRequest(rowPutChange));
long generatedValue = response.getRow().getPrimaryKey()
        .getPrimaryKeyColumn("incr").getValue().asLong();
System.out.println("Generated value: " + generatedValue);

課金

この機能は、既存の課金ルールに影響しません。プライマリキーデータを返却しても、追加の読み込みキャパシティーユニットは消費されません。