![](/img/trans.png)
[英]How to add an attribute to the dynamoDB table item if it does not exist and add value to that attribute?
[英]How to insert an item with an incremental value on an attribute in dynamodb
我想在Dynamodb
中实现like mysql
的自增量功能。 经过一番搜索,我只能将updateItem
与{ ":inc": {N: "1"} }
类的更新表达式一起使用。 但它仅适用于更新现有项目。 我想要实现的是每当我们在 dynamodb 上插入新项目时将version
字段增加 1。
dynamodb 中是否有内置功能来实现这一点?
DynamoDB 没有自动递增计数功能,您必须自己实现。
您可以在事务中处理此问题,将新项目插入 DDB,然后将version
字段增加 1。这种方法具有确保版本仅在PutItem
操作成功时增加的副作用。 当您在PutItem
调用中包含ConditionExpression
以强制执行任何其他业务逻辑时,这很有用。 如果条件失败, version
将不会增加。
您可以进一步 go 并实施称为光学锁定的策略。 您将在调用updateItem
之前阅读version
字段。 在调用updateItem
时,您将使用conditionExpression
来确保数字是您所期望的。 如果另一个进程更新了版本,它将无法通过条件检查并且您的updateItem
将失败。 您可以再次尝试该操作,直到获得您期望的结果。
有关乐观锁定的更多信息: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptimisticLocking.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.