You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DynamoDB UpdateItem的attribute_not_exists条件表达式不生效问题

问题根因

你的条件表达式判断对象错误,导致校验逻辑完全不符合预期:

  • 你要实现的效果是当待更新的settingValue属性已存在时不更新,但当前代码的条件attribute_not_exists($ATTRIBUTE_KEY)是判断主键settingName的值对应的项中,是否存在名为$ATTRIBUTE_KEY的属性,这和你要校验的settingValue完全无关。
  • 额外的参数错误:--region的取值应为us-east-1,你漏写了中间的横杠,可能会导致区域请求失败。
修正后的代码
aws dynamodb update-item \
        --region us-east-1 \
        --table-name TABLE_NAME \
        --key '{"settingName":{"S":"'"$ATTRIBUTE_KEY"'"}}' \
        --update-expression 'SET #VAL = :val' \
        --expression-attribute-names '{"#VAL":"settingValue"}' \
        --expression-attribute-values '{":val":{"'"$DATA_TYPE"'":'"$ATTRIBUTE_VALUE"'}}' \
        --condition-expression "attribute_not_exists(#VAL)" \
        --return-values ALL_NEW
改动说明
  • 条件表达式改用表达式属性名#VAL指代settingValue,直接校验目标属性是否存在,符合你的业务需求
  • 修正了区域名的拼写错误
  • 保留了原有的表达式属性名规则,避免DynamoDB保留字冲突问题

内容的提问来源于stack exchange,提问作者Auto geek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03