阅读668 返回首页    go 阿里云


更新数据__从 SQL 到 NoSQL_快速入门_表格存储-阿里云

SQL

关系型数据库中,可以使用 UPDATE 语句对表中的一行或者多行记录进行修改,如下所示:

  1. UPDATE UserHistory
  2. SET behavior_type = 'collect'
  3. WHERE user_id = '10100' AND time_stamp = 1479265526 AND behavior_count > 4.0;

表格存储

使用表格存储时,可以使用 UpdateRow 接口更新一行数据,如下所示:

  1. // 设置主键
  2. PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
  3. primaryKeyBuilder.addPrimaryKeyColumn("user_id", PrimaryKeyValue.fromString("10100"));
  4. primaryKeyBuilder.addPrimaryKeyColumn("time_stamp", PrimaryKeyValue.fromLong(1479265526));
  5. PrimaryKey primaryKey = primaryKeyBuilder.build();
  6. // 设置更新条件:期望原行存在, 且behavior_count的值大于4.0时更新
  7. Condition condition = new Condition(RowExistenceExpectation.EXPECT_EXIST);
  8. condition.setColumnCondition(new SingleColumnValueCondition("behavior_count", SingleColumnValueCondition.CompareOperator.GREATER_THAN, ColumnValue.fromDouble(4.0)));
  9. rowUpdateChange.setCondition(condition);
  10. // 设置属性列的值
  11. RowUpdateChange rowUpdateChange = new RowUpdateChange(TABLE_NAME, primaryKey);
  12. rowUpdateChange.put(new Column("behavior_type", ColumnValue.fromSting("collect")));
  13. // 插入该行数据
  14. client.updateRow(new UpdateRowRequest(rowUpdateChange));

使用 UpdateRow 接口时,请注意如下关键事项:

  • DeleteRow 需要指定表名 TABLE_NAME 和全部的主键 primaryKey,被更新的列可以存在或者不存在。

  • UpdateRow 只会修改这一行中需要修改的列,PutRow 则会使用新的数据覆盖原来整行的数据。

  • 更新可以设置两种检查条件:行存在检查条件检查

  • SQL中 UPDATE 会对满足 WHERE 的所有记录进行更新,表格存储的 UpdateRow 只更新指定主键的一行数据,条件检查也只针对本行的主键列或者属性列做检查。

  • 可使用 BatchWriteRow 接口更新多条记录,以大大提高数据的写入速度。

最后更新:2016-11-23 16:04:20

  上一篇:go 检索数据__从 SQL 到 NoSQL_快速入门_表格存储-阿里云
  下一篇:go 删除数据__从 SQL 到 NoSQL_快速入门_表格存储-阿里云