在 DynamoDB 中执行更新时每个属性的多个条件表达式

Multiple condition expressions for each attribute when performing update in DynamoDB

我有以下代码来更新一个 DynamoDB 属性:

val key = new AttributeValue().withS(rowAsMap.get("key").get)
val value = new AttributeValue().withS(rowAsMap.get("newValue").get)

val updItemReq: UpdateItemRequest = new UpdateItemRequest()
            .withTableName("table_name")
            .addExpressionAttributeValuesEntry(":newValue", value)
            .addExpressionAttributeNamesEntry("#val", "value")
            .addKeyEntry("key", key)
            .withUpdateExpression("set previous_value = #val, #val= :newValue")
            .withConditionExpression("#val <> :newValue")
    
ddb.updateItem(updItemReq)

如果满足条件表达式(在本例中为修改),这将成功更新“值”和“previous_value”属性。

我需要对其他属性执行此操作,因此我需要为每个要更新的属性指定一个特定的条件表达式。我可以在不必创建与我拥有的属性一样多的“UpdateItemRequests”的情况下执行此操作吗?

抱歉,没有。只有一个条件表达式

查看此文档:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.OperatorsAndFunctions.html

您可以在一个 updateItem 请求中包含多个条件。