このトピックでは、PHP 用 Tablestore SDK を使用してデータテーブルの自動インクリメント主キー列を設定する方法、および自動インクリメント列にデータを書き込み、生成された値を取得する方法について説明します。
使用上の注意
PHP 用 Tablestore SDK V4.0.0 以降では、自動インクリメント主キー列がサポートされています。
自動インクリメント列の自動インクリメント値は一意であり、パーティションキーレベルで増加しますが、連続しているとは限りません。
前提条件
自動インクリメント主キー列を設定する
データテーブルを作成するときに、パーティション以外の主キー列を自動インクリメント列として設定できます。既存のデータテーブルでは、自動インクリメント列を設定できません。
説明
INTEGER 型のパーティション以外の主キー列のみを自動インクリメント列として設定できます。データテーブルは最大 1 つの自動インクリメント列を持つことができます。自動インクリメント列に対して生成される値は、64 ビット符号付き long 整数です。
サンプルコード
次のサンプルコードは、test_table という名前のデータテーブルを作成します。テーブルの主キーには、パーティションキー id と自動インクリメント列 incr が含まれます。
function createTable($client)
{
$request = [
'table_meta' => [
'table_name' => 'test_table',
'primary_key_schema' => [
['id', PrimaryKeyTypeConst::CONST_STRING],
['incr', PrimaryKeyTypeConst::CONST_INTEGER, PrimaryKeyOptionConst::CONST_PK_AUTO_INCR]
]
],
'reserved_throughput' => [
'capacity_unit' => [
'read' => 0,
'write' => 0
]
],
'table_options' => [
'time_to_live' => -1,
'max_versions' => 1,
'deviation_cell_version_in_sec' => 86400
]
];
$client->createTable($request);
}データの書き込み
自動インクリメント列にデータを書き込むときは、その値をプレースホルダーに設定するだけで済みます。クエリと更新のために生成された自動インクリメント値を取得するには、putRow の戻り値の型を CONST_PK に設定する必要があります。
サンプルコード
次のサンプルコードは、test_table テーブルにデータの行を書き込み、書き込まれた行データの主キー情報を取得して出力します。
function putRow($client)
{
$row = [
'table_name' => 'test_table',
'primary_key' => [
['id', 'row1'],
// 自動インクリメント列を設定します。
['incr', null, PrimaryKeyTypeConst::CONST_PK_AUTO_INCR]
],
'attribute_columns' => [
['col1', 'val1']
],
'return_content' => [
'return_type' => ReturnTypeConst::CONST_PK
]
];
$result = $client->putRow($row);
// 読み取りおよび書き込み操作の CU 消費量。
echo "Read CU Cost: " . $result['consumed']['capacity_unit']['read'] . "\n";
echo "Write CU Cost: " . $result['consumed']['capacity_unit']['write'] . "\n";
// 返された主キー情報を取得して出力します。戻り値の型が CONST_PK に設定されていない場合、主キー情報はデフォルトでは返されません。
if(!empty($result['primary_key'])){
echo "Primary key: ";
foreach ($result['primary_key'] as $primaryKey) {
echo "(" . implode(", ", $primaryKey) . ")";
}
}
}