如果 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/