如何只允许现有dynamoDB资源上的UpdateItem?

时间:2016-07-10 18:11:46

标签: amazon-dynamodb

可以为DynamoDB UpdateItem传递一个选项,以便在不存在的项目上调用UpdateItem失败吗?

如果partition-key不存在,目前UpdateItem会愉快地创建一个新项目。在这种特殊情况下,我想要一个错误。

当然我可以在updateItem之前做一个get,并且只在存在时执行updateItem但是性能较差/更麻烦。

2 个答案:

答案 0 :(得分:2)

您可以使用 ConditionExpression 进行条件更新。

条件更新API非常强大,但在您的情况下,您需要构建一个条件表达式,用于检查您尝试更新的项目是否使用项目分区键上的条件表达式退出(和范围键)如果你的表使用一个)。

由于您未指定编程语言,因此最好的起点是the documentation

答案 1 :(得分:0)

更准确地说,您必须设置ConditionExpression: "attribute_exists(<your key attribute name>)"

如果密钥相关项不存在,那将失败 - DynamoDB搜索密钥相关项,找不到任何项,并且所有attribute_exists condition function次调用都失败。

相反,如果Item存在,它始终具有key属性,因此attribute_exists(key)返回true。