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

Tablestore:自動インクリメント主キー列の設定

最終更新日:Jun 25, 2025

このトピックでは、Tablestore SDK for Node.js を使用して、データテーブルの自動インクリメント主キー列を設定する方法について説明します。また、自動インクリメント主キー列にデータを書き込み、自動インクリメント主キー列に生成された値を取得する方法についても説明します。

使用上の注意

自動インクリメント主キー列の値は一意であり、単調に増加しますが、同じパーティションキー値を共有するパーティション内で常に連続しているとは限りません。

前提条件

クライアントが初期化されていること。詳細については、「Tablestore クライアントを初期化する」をご参照ください。

自動インクリメント主キー列を設定する

データテーブルを作成するときに、パーティションキーではない主キー列を自動インクリメント主キー列として指定できます。既存のデータテーブルでは、自動インクリメント主キー列を設定できません。

説明

パーティションキーではない主キー列を自動インクリメント主キー列として指定できるのは、主キー列のデータ型が Integer の場合のみです。データテーブルは、最大で 1 つの自動インクリメント主キー列を持つことができます。自動インクリメント主キー列に生成される値は、64 ビット符号付き long 整数です。

サンプルコード

次のサンプルコードは、test_table という名前のデータテーブルを作成する方法の例を示しています。このテーブルの主キーには、パーティションキー id と自動インクリメント主キー列 incr が含まれています。

function createTableSample() {
    var createParams = {
        tableMeta: {
            tableName: 'test_table',
            primaryKey: [
                {
                    name: 'id',
                    type: 'STRING'
                },
                {
                    name: 'incr',
                    type: 'INTEGER',
                    option: 'AUTO_INCREMENT'
                },
            ]
        },
        tableOptions: {
            timeToLive: -1,
            maxVersions: 1
        },
        reservedThroughput: {
            capacityUnit: {
                read: 0,
                write: 0
            }
        },
    };

    client.createTable(createParams, function (err, data) {
        if (err) {
            console.error('error:', err);
            return;
        }
        console.log('success:', data);
    });
}

データの書き込み

自動インクリメント主キー列にデータを書き込むときは、自動インクリメント主キー列の値をプレースホルダーに設定するだけで済みます。データのクエリと更新のために自動インクリメント主キー列の生成値を取得する場合は、returnType パラメーターを Primarykey に設定する必要もあります。

サンプルコード

次のサンプルコードは、test_table テーブルにデータの行を書き込み、書き込まれた行データの主キー情報を取得して出力する方法の例を示しています。

function putRowSample() {
    var putParams = {
        tableName: 'test_table',
        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
        primaryKey: [
            { id: 'row1' },
            // 自動インクリメント主キー列をプレースホルダーに設定します。
            { incr: TableStore.PK_AUTO_INCR }
        ],
        attributeColumns: [
            { 'col1': 'val1' }
        ],
        // 戻り値の型を Primarykey に設定して、書き込まれた行データの主キー情報を返します。
        returnContent: { returnType: TableStore.ReturnType.Primarykey }
    };

    client.putRow(putParams, function (err, data) {
        if (err) {
            console.error('error:', err);
            return;
        }

        // RequestId と消費された CU
        console.log("RequestId: ", data.RequestId);
        console.log("Read CU Cost: ", data.consumed.capacityUnit.read);
        console.log("Write CU Cost: ", data.consumed.capacityUnit.write);

        // 返された主キー情報を取得して出力します。戻り値の型が Primarykey に設定されていない場合、主キー情報はデフォルトでは返されません。
        if (data.row.primaryKey) {
            console.log(JSON.stringify(data.row.primaryKey));
        }
    });
}