在 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”的情况下执行此操作吗?
抱歉,没有。只有一个条件表达式
您可以在一个 updateItem 请求中包含多个条件。
我有以下代码来更新一个 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”的情况下执行此操作吗?
抱歉,没有。只有一个条件表达式
您可以在一个 updateItem 请求中包含多个条件。