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

Tablestore:自動採番主キー列の設定

最終更新日:Apr 30, 2026

Tablestore SDK for Node.js を使用して、データテーブルに自動採番主キー列を追加し、その列にデータ行を書き込み、生成された値を取得します。

前提条件

作業を開始する前に、次の要件を満たしていることを確認してください。

自動インクリメント列の動作

自動採番主キー列の値は一意かつ単調増加ですが、同じパーティションキー値を共有するパーティション内では連続しているとは限りません。

自動採番主キー列を持つデータテーブルの作成

データテーブルを作成する際、パーティションキー以外のプライマリキー列を 1 つ選択し、その optionAUTO_INCREMENT に設定することで、自動採番主キー列として指定できます。この列は INTEGER データの型を使用する必要があります。テーブルに設定できる自動採番主キー列は最大で 1 列であり、既存のテーブルには後から追加できません。

説明

自動採番主キー列の値は 64 ビット符号付き長整数です。AUTO_INCREMENT オプションは、パーティションキー以外の列でのみサポートされます。

次の例では、2 つのプライマリキー列(id(パーティションキー、STRING)および incr(自動採番、INTEGER))を持つ test_table を作成します。

function createTableSample() {
    var createParams = {
        tableMeta: {
            tableName: 'test_table',
            primaryKey: [
                {
                    name: 'id',
                    type: 'STRING'       // パーティションキー — 書き込みごとにこの値を指定します
                },
                {
                    name: 'incr',
                    type: 'INTEGER',
                    option: 'AUTO_INCREMENT'  // Tablestore がこの値を自動的に生成します
                },
            ]
        },
        tableOptions: {
            timeToLive: -1,   // -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);
    });
}

データの書き込み

行を書き込む際は、自動採番列の値を TableStore.PK_AUTO_INCR に設定します。これは Tablestore に対して値を自動生成するよう指示するプレースホルダーです。生成された値を取得する(たとえば、後続の読み取りや更新で使用する)には、returnContent 内で returnTypeTableStore.ReturnType.Primarykey に設定します。

次の例では、test_table に行を書き込み、生成されたプライマリキーを出力します。

function putRowSample() {
    var putParams = {
        tableName: 'test_table',
        condition: new TableStore.Condition(TableStore.RowExistenceExpectation.IGNORE, null),
        primaryKey: [
            { id: 'row1' },
            // PK_AUTO_INCR をプレースホルダーとして使用 — Tablestore が生成された値に置き換えます
            { incr: TableStore.PK_AUTO_INCR }
        ],
        attributeColumns: [
            { 'col1': 'val1' }
        ],
        // 生成された incr 値を後続のクエリで使用できるように、完全なプライマリキーを返します
        returnContent: { returnType: TableStore.ReturnType.Primarykey }
    };

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

        // リクエストメタデータおよび消費された容量単位を出力
        console.log("RequestId: ", data.RequestId);
        console.log("Read CU Cost: ", data.consumed.capacityUnit.read);
        console.log("Write CU Cost: ", data.consumed.capacityUnit.write);

        // 自動採番値を含む生成されたプライマリキーを出力
        // returnType が Primarykey に設定されている場合にのみ返されます
        if (data.row.primaryKey) {
            console.log(JSON.stringify(data.row.primaryKey));
        }
    });
}