如果未进行任何更改,DynamoDb 是否会更新任何内容?

px0*_*x06 2 java amazon-web-services amazon-dynamodb

如果没有进行任何更改,DynamoDb 是否会更新记录UpdateItemRequest

例如,如果表包含如下记录:

{
  "id": "1",
  "name": "alice"
}
Run Code Online (Sandbox Code Playgroud)

更新请求如下:

String expression = "set #n = :n"
HashMap<String, String> expressionAttributeNames = new HashMap<>();
expressionAttributeNames.put("#n", "name");
HashMap<String, AttributeValue> expressionAttributeValues = new HashMap<>();
expressionAttributeValues.put(":n", AttributeValue.builder().s("alice").build());
UpdateItemRequest updateItemRequest =
        UpdateItemRequest.builder()
            .tableName(tableName)
            .key(key)
            .updateExpression(expression)
            .expressionAttributeNames(expressionAttributeNames)
            .expressionAttributeValues(expressionAttributeValues)
            .build();
dynamoDbClient.updateItem(updateItemRequest);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,名字仍然是“alice”,没有任何改变。DynamoDb 是否将此视为更新还是将其视为无?我这样问是因为我想知道此请求是否会触发 DynamoDb 流。

ant*_*nku 6

根据文档,如果不更改项目中的任何数据,则不会触发流:UpdateItem

如果您执行的 PutItem 或 UpdateItem 操作不更改项目中的任何数据,DynamoDB Streams 不会写入该操作的流记录。