是否可以更新作为 DynamoDB 主键一部分的属性值?
Is it possible to update the attribute value which is part of the primary key in DynamoDB?
我有 table 和 "RefNumber"、"status" 和 "Date"。 "RefNumber"是partition Key,"Status"是sort key 所以,两者都是主键。
{
"RefNumber": "122345",
"Status": "0",
"DateTime": 15343354545
}
获取此记录后,我想将 "Status" 更新为“1”。我有多个工作人员读取 DynamoDB 记录,只是为了避免任何 2 个工作人员处理同一条记录我想使用 ConditionExpression 获取并更新 "Status" 为“1”,如果更新成功,工作人员将处理,否则它将跳过.
我的问题是,更新作为 dynamodb 主键一部分的属性值是否是一个好的设计
简短的回答是不,不可能更新构成 DynamoDB 中项目键的属性。
您只能删除该项目并创建另一个。
如果你考虑到这一点,从逻辑上讲,修改元素的键没有任何意义:一个元素由它的键唯一标识,那么改变键甚至意味着什么?这将意味着旧元素被完全替换。
DynamoDB 不提供原子“替换”操作。
我有 table 和 "RefNumber"、"status" 和 "Date"。 "RefNumber"是partition Key,"Status"是sort key 所以,两者都是主键。
{
"RefNumber": "122345",
"Status": "0",
"DateTime": 15343354545
}
获取此记录后,我想将 "Status" 更新为“1”。我有多个工作人员读取 DynamoDB 记录,只是为了避免任何 2 个工作人员处理同一条记录我想使用 ConditionExpression 获取并更新 "Status" 为“1”,如果更新成功,工作人员将处理,否则它将跳过.
我的问题是,更新作为 dynamodb 主键一部分的属性值是否是一个好的设计
简短的回答是不,不可能更新构成 DynamoDB 中项目键的属性。
您只能删除该项目并创建另一个。
如果你考虑到这一点,从逻辑上讲,修改元素的键没有任何意义:一个元素由它的键唯一标识,那么改变键甚至意味着什么?这将意味着旧元素被完全替换。
DynamoDB 不提供原子“替换”操作。