Go语言 spanner.mutation如何知道要更新哪一行

kiz8lqtg  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(90)

从文档中:
更改现有行中列的值与插入新行非常相似:

m := spanner.Update("User",
  []string{"user_id", "profile"},
  []interface{}{UserID, profile})
_, err := client.Apply(ctx, []*spanner.Mutation{m})

Spanner如何知道要更新哪一行?我发现它缺少WHERE子句。它是否自动使用某些字段作为键(如隐式user_id = "...")?

xdnvmnnf

xdnvmnnf1#

Cloud Spanner将自动使用该变化正在更新的表的主键。这意味着您必须在Update变化中包含主键的所有列。因此,一个Update变化也将只更新一行(如果该行不存在,它将返回NOT_FOUND错误)。
这也表示无法更新数据列的主索引键值。如果您要“变更”主索引键值,就必须删除数据列,然后插入新的数据列。
请访问https://cloud.google.com/spanner/docs/reference/rpc/google.spanner.v1#mutation了解有关突变如何工作的更多信息。

相关问题