amazon-web-services - 用 DynamoDB 中的新项目替换旧项目
问题描述
我正在使用https://godoc.org/github.com/aws/aws-sdk-go-v2/service/dynamodb#DynamoDB.PutItemRequest
我的功能如下:
func (h dynamoHandler) save(selection DeliveryDate) (err error) {
av, err := dynamodbattribute.MarshalMap(selection)
if err != nil {
log.WithError(err).Error("failed to marshal selection")
return
}
req := h.db.PutItemRequest(&dynamodb.PutItemInput{
TableName: aws.String(h.Table),
Item: av,
})
_, err = req.Send()
if err != nil {
log.WithField("table", h.Table).WithError(err).Error("putting dynamodb")
return
}
return
}
我假设由于分区键“wfr5a”是相同的,因此较新的“chosen#2019-05-19T13:42:54+08:00”(复合和排序键)应该替换了该行。
"OrderID (S)","StatusDate (S)","LastUpdated (S)"
"wfr5a","chosen#2019-05-19T13:42:54+08:00","2019-05-19T13:49:34+08:00"
"wfr5a","proposal#2019-05-19T13:42:54+08:00","2019-05-19T13:42:58+08:00"
尽管如您所见,它创建了一个新项目。我错过了什么,所以它只是替换了记录,即“wfr5a”只有一个唯一的行
解决方案
当您有复合主键(分区键+排序键)时,这两个字段的组合是唯一的,而不是分区键。
推荐阅读
- python - 如何解决 tensorflow Conv2DBackpropFilter 错误?
- python - Investpy 安装有什么问题?
- r - 即使模型列和数据相同,predict() 函数也会引发错误
- c# - 如何将提交的表单从子组件传递给父组件?
- c# - DataGridView 行数
- kubernetes-helm - Helm 范围列表与元组
- excel - vba嵌套for循环
- python - Python将字节转换为str
- workflow - NetSuite 工作流“将结果存储在”中未列出任何字段
- mysql - 如何在多个组和表上使用 WHERE 子句获得前 3 位平均值?