我的updateItem调用条件超出了定义的最大值。当我运行它时,我的最终值为101.是否有办法确保条件表达式检查更新的 最终值 以防止超出100?请注意,在我的测试中,我增加1,但最终我会增加任意值。
$query = array(
'TableName' => $this->table_name,
'Key' => $this->get_query_key($obj),
'ConditionExpression' => 'num_completed <= :max',
'UpdateExpression' => 'SET num_completed = num_completed + :num',
'ExpressionAttributeValues' => array(
':num' => array('N' => 1),
':max' => array('N' => 100)
)
//'ReturnConsumedCapacity' => 'TOTAL'
);
try {
$this->dynamo_db->updateItem($query);
}
答案 0 :(得分:0)
DDB在更新操作之前评估条件表达式。也就是说,你不应该依赖&#34; final&#34;更新表达式的值(即使它是原子计数器)。
一个非常简单的解决方法是编写一个丰富的条件表达式,例如从:num
减去:max
,如下所示:
...
'ConditionExpression' => 'num_completed <= (:max - :num)',
'UpdateExpression' => 'SET num_completed = num_completed + :num',
...
这对您的案件有意义吗?