属性名に『Status』ってつけたら、予約語とかぶっちゃってたらしくて、条件付きUpdateしようとした時に Invalid UpdateExpression: Attribute name is a reserved keyword; reserved keyword: (属性名)
エラーが出た。
じゃあ予約語は属性名に使えないのかと言うとそんなことはなくて、UpdateExpression
上では当該の属性名をプレースホルダにしておき、ExpressionAttributeNames
で属性名を指定してやればいいらしい。
なお ExpressionAttributeNames
自体はupdate特有のものではなくて、クエリでも同じように使うみたいなので留意。
↓のコードは、MyTable の Id = 999 の項目について、Status = 1 ならば Status = 2 に更新する条件付きUpdate。
↓Pythonでもほぼ同じ。