DynamoDB 用の PartiQL 更新ステートメント
UPDATE ステートメントを使用して、Amazon DynamoDB テーブルの項目内にある、1 つ以上の属性の値を変更します。
注記
一度に更新できる項目は 1 つだけです。1 つの DynamoDB PartiQL ステートメントを発行して、複数の項目を更新することはできません。複数項目の更新については、「DynamoDB 用の PartiQL を使用してトランザクションを実行する」または「DynamoDB 用の PartiQL を使用してバッチ操作を実行する」を参照してください。
構文
UPDATEtable[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'