本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SQL 語言會提供 UPDATE
陳述式來修改資料。Amazon DynamoDB 使用 UpdateItem
操作來完成類似的任務。
修改 SQL 資料表中的資料
在 SQL 中,您會使用 UPDATE
陳述式修改一或多列。SET
子句可為一或多個資料行指定新的值,WHERE
子句則可決定要修改的資料列。以下是範例。
UPDATE Music
SET RecordLabel = 'Global Records'
WHERE Artist = 'No One You Know' AND SongTitle = 'Call Me Today';
若沒有任何資料列符合 WHERE
子句,UPDATE
陳述式便沒有任何效果。
修改 DynamoDB 中資料表的資料
在 DynamoDB 中,您可以使用 DynamoDB API 或 PartiQL (SQL 相容查詢語言) 修改單一項目。如果您想要修改多個項目,則必須使用多個操作。
若使用 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
的運作方式類似「upsert」操作。如果項目存在資料表中,則會進行更新,如果不存在,則會新增 (插入) 新項目。
UpdateItem
支援條件式寫入,即只有在特定 ConditionExpression
評估為 true 時,操作才會成功。例如,若歌曲的價格未大於或等於 2.00,下列 UpdateItem
操作就不會執行更新。
{ 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 資料庫中的順序產生器、身分欄位或自動遞增欄位在許多方面都非常類似。
下列是 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" }