Hash 如果我们用一个重复的散列键插入dynamo DB,会发生什么?

Hash 如果我们用一个重复的散列键插入dynamo DB,会发生什么?,hash,key,amazon-dynamodb,Hash,Key,Amazon Dynamodb,我正在尝试插入dynamo DB。当我调用putItem函数时,如果哈希键已经存在于数据库中,会发生什么?PutItemResult对象是否包含可以告诉我们是否尝试了重复哈希项的内容?我希望避免运行另一个查询来检查是否存在使用散列键的条目。如果在现有主键上插入一个项,除非使用“预期值”,否则该项将被覆盖。以下是官方文件的介绍: 创建新项,或用新项(包括所有属性)替换旧项。如果指定表中已存在具有相同主键的项,则新项将完全替换现有项。您可以执行条件put(如果不存在具有指定主键的项,则插入新项),

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

如果在现有主键上插入一个项,除非使用“预期值”,否则该项将被覆盖。以下是官方文件的介绍:

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

注意

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


否则,您也可以使用
UpdateItem
来更新预先存在的项的字段:

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


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

您使用的是特定的框架吗?我认为创建条目时最安全的方法是从不使用putItem,而是始终使用UpdateItem。在我的例子中,我只使用updateItem和键来创建一个对象,如果它已经退出,它什么也不做。批写入会发生什么?这是适用的还是失败的?