更新单行数据

更新时间:
复制为 MD 格式

本文介绍如何通过 PHP SDK 更新表格存储数据表中的单行数据,您可以更新属性列的值、添加属性列、删除属性列的某个版本或整个属性列。

前提条件

初始化Tablestore Client

方法说明

public function updateRow(array $request)

$request参数说明

名称

类型

说明

table_name(必选)

string

数据表名称。

primary_key(必选)

array

主键信息,包括主键列名称和主键值。

  • 主键列数据类型包括 STRING、INTEGER 和 BINARY。

  • 主键个数和类型必须与数据表的主键保持一致。

update_of_attribute_columns(必选)

array

更新的属性列信息和操作类型。

condition(必选)

array

更新条件,详情请参见条件更新

return_content(可选)

array

返回的数据内容。

  • return_type(必选)array:返回类型。

    • ReturnTypeConst::CONST_NONE:默认值,不返回数据。

    • ReturnTypeConst::CONST_PK:返回主键列。

    • ReturnTypeConst::CONST_AFTER_MODIFY:返回更改后的列值,用于原子计数器

transaction_id(可选)

string

局部事务ID,用于唯一标识局部事务,详情请参见局部事务

示例代码

以下示例代码用于修改 test_table 表中主键值为 row1 的行数据,将属性列 col1 的值修改为 changed_val1。

$request = array(
    'table_name' => 'test_table',
    // 构造主键
    'primary_key' => array(
        array('id', 'row1')
    ),
    // 更新行数据时必须指定更新条件 (RowExistenceExpectationConst::CONST_IGNORE,表示不做行存在性判断)
    'condition' => RowExistenceExpectationConst::CONST_IGNORE
);
// 更新的属性列
$request['update_of_attribute_columns'] = array(
    'PUT' => array(
        array('col1', 'changed_val1')
    )
);

try {
    // 调用 updateRow 方法更新行数据
    $response = $client->updateRow($request);
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";   
} catch (Exception $e) {
    echo "Update Row failed.";
}

您也可以参照示例代码进行以下行数据操作。

  • 添加一个属性列。

    $request['update_of_attribute_columns'] = array(
        'PUT' => array(
            array('col2', 'val2')
        )
    );
  • 设置属性列数据版本号。

    $request['update_of_attribute_columns'] = array(
        'PUT' => array(
            array('col2', 'val2', null, intval(microtime(true) * 1000))
        )
    );
  • 删除属性列指定版本的数据。

    $request['update_of_attribute_columns'] = array(
        'DELETE' => array(
            array('col2', 1754285998447)
        )
    );
  • 删除整个属性列数据。

    $request['update_of_attribute_columns'] = array(
        'DELETE_ALL' => array('col2')
    );

相关文档

批量更新数据