全部产品
表格存储

单行数据操作

更新时间:2017-09-08 16:10:34   分享:   

表格存储的 SDK 提供了 PutRow、GetRow、UpdateRow 和 DeleteRow 等单行操作的接口。

插入一行数据(PutRow)

插入数据到指定的行。

接口

  1. // @param PutRowRequest 执行PutRow操作所需参数的封装。
  2. // @return PutRowResponse
  3. PutRow(request *PutRowRequest) (*PutRowResponse, error)

示例

  1. putRowRequest := new(tablestore.PutRowRequest)
  2. putRowChange := new(tablestore.PutRowChange)
  3. putRowChange.TableName = tableName
  4. putPk := new(tablestore.PrimaryKey)
  5. putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
  6. putPk.AddPrimaryKeyColumn("pk2", int64(2))
  7. putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
  8. putRowChange.PrimaryKey = putPk
  9. putRowChange.AddColumn("col1", "col1data1")
  10. putRowChange.AddColumn("col2", int64(3))
  11. putRowChange.AddColumn("col3", []byte("test"))
  12. putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE)
  13. putRowRequest.PutRowChange = putRowChange
  14. _, err := client.PutRow(putRowRequest)
  15. if err != nil {
  16. fmt.Println("putrow failed with error:", err)
  17. } else {
  18. fmt.Println("putrow finished")
  19. }
  • RowExistenceExpectation.IGNORE 表示不管此行是否已经存在,都会插入新数据,如果之前有会被覆盖。
  • RowExistenceExpectation.EXPECT_EXIST 表示只有此行存在时,才会插入新数据,此时,原有数据也会被覆盖。
  • RowExistenceExpectation.EXPECT_NOT_EXIST 表示只有此行不存在时,才会插入数据,否则不执行。

说明:详细代码可在 PutRow@GitHub 获取。

读取一行数据(GetRow)

根据给定的主键读取单行数据。

接口

  1. //返回表(Table)中的一行数据。
  2. //
  3. // @param GetRowRequest 执行GetRow操作所需参数的封装。
  4. // @return GetRowResponse GetRow操作的响应内容。
  5. GetRow(request *GetRowRequest) (*GetRowResponse, error)

示例

读取一行数据。

  1. getRowRequest := new(tablestore.GetRowRequest)
  2. criteria := new(tablestore.SingleRowQueryCriteria);
  3. putPk := new(tablestore.PrimaryKey)
  4. putPk.AddPrimaryKeyColumn("pk1", "pk1value1")
  5. putPk.AddPrimaryKeyColumn("pk2", int64(2))
  6. putPk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
  7. criteria.PrimaryKey = putPk
  8. getRowRequest.SingleRowQueryCriteria = criteria
  9. getRowRequest.SingleRowQueryCriteria.TableName = tableName
  10. getRowRequest.SingleRowQueryCriteria.MaxVersion = 1
  11. getResp, err := client.GetRow(getRowRequest)
  12. if err != nil {
  13. fmt.Println("getrow failed with error:", err)
  14. } else {
  15. fmt.Println("get row col0 result is ",getResp.Columns[0].ColumnName, getResp.Columns[0].Value,)
  16. }

说明:详细代码可在 GetRow@GitHub 获取。

更新一行数据(UpdateRow)

更新指定行的数据,如果该行不存在,则新增一行;若该行存在,则根据请求的内容在这一行中新增、修改或者删除指定列的值。

接口

  1. // 更新表中的一行
  2. // @param UpdateRowRequest 执行updateRow操作所需参数的封装。
  3. // @return UpdateRowResponse UpdateRow操作的响应内容。
  4. UpdateRow(request *UpdateRowRequest) (*UpdateRowResponse, error)

示例

更新一行数据。

  1. updateRowRequest := new(tablestore.UpdateRowRequest)
  2. updateRowChange := new(tablestore.UpdateRowChange)
  3. updateRowChange.TableName = tableName
  4. updatePk := new(tablestore.PrimaryKey)
  5. updatePk.AddPrimaryKeyColumn("pk1", "pk1value1")
  6. updatePk.AddPrimaryKeyColumn("pk2", int64(2))
  7. updatePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
  8. updateRowChange.PrimaryKey = updatePk
  9. updateRowChange.DeleteColumn("col1")
  10. updateRowChange.PutColumn("col2", int64(77))
  11. updateRowChange.PutColumn("col4", "newcol3")
  12. updateRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
  13. updateRowRequest.UpdateRowChange = updateRowChange
  14. _, err := client.UpdateRow(updateRowRequest)
  15. if err != nil {
  16. fmt.Println("update failed with error:", err)
  17. } else {
  18. fmt.Println("update row finished")
  19. }

说明:详细代码可在 UpdateRow@GitHub 获取。

删除一行数据(DeleteRow)

接口

  1. // 删除表中的一行
  2. // @param DeleteRowRequest 执行DeleteRow操作所需参数的封装。
  3. // @return DeleteRowResponse DeleteRow操作的响应内容。
  4. DeleteRow(request *DeleteRowRequest) (*DeleteRowResponse, error)

示例

删除一行数据。

  1. deleteRowReq := new(tablestore.DeleteRowRequest)
  2. deleteRowReq.DeleteRowChange = new(tablestore.DeleteRowChange)
  3. deleteRowReq.DeleteRowChange.TableName = tableName
  4. deletePk := new(tablestore.PrimaryKey)
  5. deletePk.AddPrimaryKeyColumn("pk1", "pk1value1")
  6. deletePk.AddPrimaryKeyColumn("pk2", int64(2))
  7. deletePk.AddPrimaryKeyColumn("pk3", []byte("pk3"))
  8. deleteRowReq.DeleteRowChange.PrimaryKey = deletePk
  9. deleteRowReq.DeleteRowChange.SetCondition(tablestore.RowExistenceExpectation_EXPECT_EXIST)
  10. clCondition1 := tablestore.NewSingleColumnCondition("col2", tablestore.CT_EQUAL, int64(3))
  11. deleteRowReq.DeleteRowChange.SetColumnCondition(clCondition1)
  12. _, err := client.DeleteRow(deleteRowReq)
  13. if err != nil {
  14. fmt.Println("delete failed with error:", err)
  15. } else {
  16. fmt.Println("delete row finished")
  17. }

说明:详细代码可在 DeleteRow@GitHub 获取。

本文导读目录
本文导读目录
以上内容是否对您有帮助?