DynamoDB updateItem创建新记录

时间:2017-04-06 09:04:51

标签: php amazon-dynamodb

如果会话存在,则更新数据。

但是当会话不存在时,它会创建一个新行。在这个阶段,我不想做任何动作。

$sessionId = $params['session_id'];
    $response = $this->dbo->updateItem([
        'TableName' => $this->tableName,
        'Key' => [
            'id' => [ 'S' => $sessionId]
        ],
        'ExpressionAttributeValues' => [
            ':val1' => ['S' => date('Y-m-d H:i:s')]
        ],
        'UpdateExpression' => 'set sessionEnd = :val1',
        'attributeExists' => 'id',
        'ReturnValues' => "UPDATED_NEW"
    ]);

1 个答案:

答案 0 :(得分:2)

update item API会创建新项目(如果它不存在)。您可以使用ConditionExpression停止创建新项目。

  

编辑现有项目的属性,或向表格添加新项目   如果它还不存在。

这意味着只有id已经存在,才会发生更新操作。此外,它将停止创建新项目。

'ConditionExpression' => 'attribute_exists(id)',

如果找不到密钥,则API会抛出以下异常。

"code": "ConditionalCheckFailedException",