DynamoDB API では、UpdateItem
オペレーションを使用して、単一の項目を変更します。
{
TableName: "Music",
Key: {
"Artist":"No One You Know",
"SongTitle":"Call Me Today"
},
UpdateExpression: "SET RecordLabel = :label",
ExpressionAttributeValues: {
":label": "Global Records"
}
}
属性値を指定するには、変更する項目の Key
属性および UpdateExpression
を指定する必要があります。UpdateItem
は、「アップサート」オペレーションのように動作します。テーブルに項目が存在する場合は更新され、存在しない場合は新しい項目が追加 (挿入) されます。
UpdateItem
は、条件付き書き込みをサポートしており、特定の ConditionExpression
が true と評価された場合のみ、オペレーションが成功します。たとえば、次の UpdateItem
オペレーションは、曲の価格が 2.00 以上でない限り、更新を実行しません。
{
TableName: "Music",
Key: {
"Artist":"No One You Know",
"SongTitle":"Call Me Today"
},
UpdateExpression: "SET RecordLabel = :label",
ConditionExpression: "Price >= :p",
ExpressionAttributeValues: {
":label": "Global Records",
":p": 2.00
}
}
また、UpdateItem
はアトミックカウンター、または増加減少する Number
型の属性をサポートしています。アトミックカウンターは多くの点で SQL データベースのシーケンスジェネレーター、IDENTITY 列、または自動インクリメントフィールドと似ています。
UpdateItem
オペレーションを使用して、新しい属性 (Plays) を初期化し、曲の再生回数を追跡する例を次に示します。
{
TableName: "Music",
Key: {
"Artist":"No One You Know",
"SongTitle":"Call Me Today"
},
UpdateExpression: "SET Plays = :val",
ExpressionAttributeValues: {
":val": 0
},
ReturnValues: "UPDATED_NEW"
}
ReturnValues
パラメータは、更新された任意の属性の新しい値を返す、UPDATED_NEW
に設定されています。この場合は、0 (ゼロ) を返します。
ユーザーがこの曲を再生するたびに、次の UpdateItem
オペレーションを使用して Plays を 1 ずつ増分できます。
{
TableName: "Music",
Key: {
"Artist":"No One You Know",
"SongTitle":"Call Me Today"
},
UpdateExpression: "SET Plays = Plays + :incr",
ExpressionAttributeValues: {
":incr": 1
},
ReturnValues: "UPDATED_NEW"
}
PartiQL では、Update
ステートメントを利用する ExecuteStatement
オペレーションを使用して、テーブル内の項目を変更します。
このテーブルのプライマリキーは、Artist および SongTitle で構成されます。これらの属性の値を指定する必要があります。
UPDATE Music
SET RecordLabel ='Global Records'
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
また、次の例のように、複数のフィールドを一度に変更することもできます。
UPDATE Music
SET RecordLabel = 'Global Records'
SET AwardsWon = 10
WHERE Artist ='No One You Know' AND SongTitle='Call Me Today'
また、Update
はアトミックカウンター、または増加減少する Number
型の属性をサポートしています。アトミックカウンターは多くの点で SQL データベースのシーケンスジェネレーター、IDENTITY 列、または自動インクリメントフィールドと似ています。
次は、曲が再生された回数を追跡するための新しい属性 (Plays) を初期化する Update
ステートメントの例です。
UPDATE Music
SET Plays = 0
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'
ユーザーがこの曲を再生するたびに、次の Update
ステートメントを使用して Plays を 1 ずつ増分できます。
UPDATE Music
SET Plays = Plays + 1
WHERE Artist='No One You Know' AND SongTitle='Call Me Today'