38

我正在尝试插入发电机数据库。当我调用 putItem 函数时,如果数据库中已经存在哈希键会发生什么?PutItemResult 对象是否包含可以告诉我们是否尝试了重复的哈希条目的内容?我想避免运行另一个查询来检查是否有一个带有我正在使用的哈希键的条目。

4

2 回答 2

54

如果您在现有主键上插入一个项目,它将被覆盖,除非您使用“预期值”。下面是官方文档的介绍:

http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_PutItem.html

创建新项目,或用新项目替换旧项目(包括所有属性)。如果指定表中已存在具有相同主键的项,则新项将完全替换现有项。您可以执行条件放置(如果具有指定主键的项不存在,则插入新项),或者如果现有项具有某些属性值,则替换现有项。

笔记

要确保新项目不会替换现有项目,请使用条件 put操作,并将 Exists 设置为 false 的主键属性或属性。

否则,您还可以使用UpdateItem更新预先存在的项目的字段:http: //docs.amazonwebservices.com/amazondynamodb/latest/developerguide/API_UpdateItem.html

于 2012-09-17T13:50:02.793 回答
3

您可以使用“withReturnValues(ReturnValue.ALL_OLD)”,它将从 PutItemResult.getAttributes 返回插入之前存在的值的 Map。

如果 PutItemResult.getAttributes 返回 null,则它是一个新条目。

于 2014-09-06T19:44:18.717 回答