DynamoDB 用の PartiQL 更新ステートメント - Amazon DynamoDB

DynamoDB 用の PartiQL 更新ステートメント

UPDATE ステートメントを使用して、Amazon DynamoDB テーブルの項目内にある、1 つ以上の属性の値を変更します。

注記

一度に更新できる項目は 1 つだけです。1 つの DynamoDB PartiQL ステートメントを発行して、複数の項目を更新することはできません。複数項目の更新については、「DynamoDB 用の PartiQL を使用してトランザクションを実行する」または「DynamoDB 用の PartiQL を使用してバッチ操作を実行する」を参照してください。

構文

UPDATE table [SET | REMOVE] path [= data] […] WHERE condition [RETURNING returnvalues] <returnvalues> ::= [ALL OLD | MODIFIED OLD | ALL NEW | MODIFIED NEW] *

パラメータ

table

(必須) 修正されるデータを含んでいるテーブル。

パス

(必須) 作成または変更される属性名、またはドキュメントパス。

データ

(必須) 属性値またはオペレーションの結果。

SET で使用するためにサポートされている操作は、次の通りです。

  • LIST_APPEND: List 型に値を追加します。

  • SET_ADD: 数値または文字列セットに値を追加します。

  • SET_DELETE: 数値または文字列セットから値を削除します。

condition

(必須) 修正される項目の選択条件。この条件は、単一のプライマリキー値を解決する必要があります。

returnvalues

(オプション) 属性が更新される前か、更新された後に、表示された項目の属性を取得したい場合に、returnvalues を使用します。有効な値は以下のとおりです。

  • ALL OLD *: 更新操作の前に表示されていた項目について、すべての属性を返します。

  • MODIFIED OLD *: 更新操作の前に表示されていた属性について、更新された属性だけを返します。

  • ALL NEW *: 更新操作の後に表示される項目について、すべての属性を返します。

  • MODIFIED NEW *: UpdateItem 操作の後に表示される属性について、更新された属性だけを返します。

戻り値

returnvalues パラメータが指定されない限り、このステートメントは値を返しません。

注記

UPDATE ステートメントの WHERE 句が、DynamoDB テーブルのどの項目も true と評価しない場合、ConditionalCheckFailedException が返ります。

既存の項目の属性値を更新します。属性が存在しない場合は、作成されます。

次のクエリは、数値型の属性 (AwardsWon) とマップ型の属性 (AwardDetail) を追加して、"Music" テーブルの項目を更新します。

UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'

RETURNING ALL OLD * を追加すると、Update 操作の前に表示されていた属性を返すことができます。

UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks' RETURNING ALL OLD *

以下が返されます。

{ "Items": [ { "Artist": { "S": "Acme Band" }, "SongTitle": { "S": "PartiQL Rocks" } } ] }

RETURNING ALL NEW * を追加すると、Update 操作の後に表示されていた属性を返すことができます。

UPDATE "Music" SET AwardsWon=1 SET AwardDetail={'Grammys':[2020, 2018]} WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks' RETURNING ALL NEW *

以下が返されます。

{ "Items": [ { "AwardDetail": { "M": { "Grammys": { "L": [ { "N": "2020" }, { "N": "2018" } ] } } }, "AwardsWon": { "N": "1" } } ] }

次のクエリは、"Music" テーブルの項目を、AwardDetail.Grammys リストに追加して更新します。

UPDATE "Music" SET AwardDetail.Grammys =list_append(AwardDetail.Grammys,[2016]) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'

次のクエリは、"Music" テーブルの項目を、AwardDetail.Grammys リストから削除して更新します。

UPDATE "Music" REMOVE AwardDetail.Grammys[2] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'

次のクエリは、"Music" テーブルで AwardDetail マップに BillBoard を追加して、項目を更新します。

UPDATE "Music" SET AwardDetail.BillBoard=[2020] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'

次のクエリは、"Music" テーブルで、文字列セットの属性 BandMembers を追加して、項目を更新します。

UPDATE "Music" SET BandMembers =<<'member1', 'member2'>> WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'

次のクエリは、"Music" テーブルで文字列セットの属性 BandMembersnewbandmember を追加して、項目を更新します。

UPDATE "Music" SET BandMembers =set_add(BandMembers, <<'newbandmember'>>) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'