我有DynamoDB,并且想要尝试更新某些条目并插入不存在的条目。我当前的代码是这样的:如果不存在,DynamoDB-Java将写入更新
updateItemSpec = new UpdateItemSpec()
.withPrimaryKey(ITable.ID,
request.getID().getValue())
.withUpdateExpression(updatedExpressionSetString)
.withNameMap(nameMap)
.withValueMap(valueMap)
try {
table.updateItem(updateItemSpec);
}
凡updateExpression是:直到到达那里的主键不存在一个条目
SET supply.#var0 =
if_not_exists(supply.#var0,:default) + :val0,
date = :dateVal
这一切的伟大工程。发生这种情况时该代码抛出异常:
在更新表达式提供的文件路径是更新无效(服务:AmazonDynamoDBv2;状态代码:400;错误代码:ValidationException;)
我的问题是:如何我是否需要更正此代码,以便它在到达主键时插入,当它到达已存在的主键时进行更新,而不需要额外的读取以检查它是否存在?
你有没有试图用没有主键的表来运行这个? – efekctive
那么表是空的默认情况下,但我仍然需要保持主键否则我得到一个_cannot有空的关键GetItem,DeleteItem,或UpdateItem error_ – MatthewO
我的意思是尝试隔离问题。尝试一个简单的更新,如果它的工作,那么你知道问题是如果存在。我现在无法访问我的Java环境 – efekctive