通过 Java SDK 执行 UPDATE 语句,更新未开启局部事务功能的数据表中的单行数据。
前提条件
安装Tablestore Java SDK并初始化客户端。
使用 5.17.11 及以上版本的 Tablestore Java SDK。
已为待更新的数据表创建映射关系,且数据表未开启局部事务功能。
使用 RAM 用户时,已授予
SQL_DML权限。
功能说明
调用 sqlQuery 方法执行 UPDATE 语句,更新一行数据的一个或多个属性列。WHERE 子句必须使用等值条件指定全部主键列,且不能更新主键列。
SQLQueryResponse sqlQuery(SQLQueryRequest request)
以下示例更新 example_table 数据表中主键值为 1 和 row1 的一行数据。
String query = "UPDATE example_table SET name = 'updated' "
+ "WHERE tenant_id = 1 AND pk = 'row1'";
SQLQueryRequest request = new SQLQueryRequest(query);
SQLQueryResponse response = client.sqlQuery(request);
System.out.println("Affected rows: " + response.getAffectedRows());
参数说明
SQLQueryRequest 包含以下参数。
|
名称 |
类型 |
说明 |
|
query(必选) |
String |
要执行的 |
返回值
SQLQueryResponse 包含以下与更新结果相关的字段。
|
字段 |
类型 |
说明 |
|
|
long |
通过 |
|
|
Map<String, ConsumedCapacity> |
通过 |
|
|
SQLStatementType |
通过 |
场景示例
原子递增或递减整数值
在 SET 子句中使用 属性列 = 属性列 + 整数 或 属性列 = 属性列 - 整数,可以原子递增或递减整数类型的属性列。以下示例将 score 列的值原子增加 5。
String query = "UPDATE example_table SET score = score + 5 "
+ "WHERE tenant_id = 1 AND pk = 'row1'";
SQLQueryRequest request = new SQLQueryRequest(query);
SQLQueryResponse response = client.sqlQuery(request);
System.out.println("Affected rows: " + response.getAffectedRows());