php - DynamoDB updateItem 创建新记录

标签 php amazon-dynamodb

如果 session 存在则更新数据。

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

$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"
    ]);

最佳答案

如果新项目不存在,更新项目 API 将创建新项目。您可以使用 ConditionExpression 停止创建新项目。

Edits an existing item's attributes, or adds a new item to the table if it does not already exist.

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

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

如果未找到 key ,API 会抛出以下异常。

"code": "ConditionalCheckFailedException",

关于php - DynamoDB updateItem 创建新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43250557/

相关文章:

php - 根据另一个结果的总数对 MySQL 结果进行排序

php - 文档根 PHP

php - 我怎样才能让我的 3 级层次结构快速加载

PHP - 无法找到套接字传输 "ssl"

node.js - 使用 lambda 函数以 JSON 形式获取数据库

php - 专门将YouTube网址转换为iframe代码,同时将BBCode网址转换为html元素

java - 如何通过 Java 中的 Executor Framework 在 DynamoDb 中获得最佳批量插入率?

amazon-web-services - DynamoDB - 如何计算查询的读取吞吐量

node.js - 预期 'property' 是字符串类型,而不是找到类型对象 - Dynamoose

node.js - dynamodb 中的预期约束以防止重复