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'