DynamoDB 用の PartiQL 更新ステートメント
UPDATE
ステートメントを使用して、Amazon DynamoDB テーブルの項目内にある、1 つ以上の属性の値を変更します。
注記
一度に更新できる項目は 1 つだけです。1 つの DynamoDB PartiQL ステートメントを発行して、複数の項目を更新することはできません。複数項目の更新については、「DynamoDB 用の PartiQL を使用してトランザクションを実行する」または「DynamoDB 用の PartiQL を使用してバッチ操作を実行する」を参照してください。
構文
UPDATE
table
[SET | REMOVE]path
[=data
] […] WHEREcondition
[RETURNINGreturnvalues
] <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"
テーブルで文字列セットの属性 BandMembers
に newbandmember
を追加して、項目を更新します。
UPDATE "Music" SET BandMembers =set_add(BandMembers, <<'newbandmember'>>) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'