本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用於 DynamoDB 的 PartiQL Update 陳述式
使用 UPDATE 陳述式來修改 Amazon DynamoDB 資料表中項目內一或多個屬性的值。
注意
您一次只能更新一個項目,因為您無法發出可刪除多個項目的單個 DynamoDB PartiQL 陳述式。如需更新多個項目的相關資訊,請參閱 使用 DynamoDB 專用 PartiQL 執行交易 或 使用 DynamoDB 專用 PartiQL 執行批次操作。
語法
UPDATEtable[SET | REMOVE]path[=data] […] WHEREcondition[RETURNINGreturnvalues] <returnvalues> ::= [ALL OLD | MODIFIED OLD | ALL NEW | MODIFIED NEW] *
參數
表格-
(必要) 包含要修改之資料的資料表。
路徑-
(必要) 要建立或修改的屬性名稱或文件路徑。
data-
(必要) 屬性值或操作的結果。
與 SET 搭配使用的支援操作:
-
LIST_APPEND:將數值新增至清單類型。
-
SET_ADD:將數值新增至數字或字串集。
-
SET_DELETE:從數字或字串集中刪除數值。
-
condition-
(必要) 要修改之項目的選取條件。此條件必須解析為單一主索引鍵值。
returnvalues-
(選用) 若想取得更新之前或之後出現的項目屬性,則請使用
returnvalues。有效值為:-
ALL OLD *:傳回更新操作之前出現的所有項目屬性。 -
MODIFIED OLD *:僅傳回新操作之前出現的更新屬性。 -
ALL NEW *:傳回更新操作之後出現的所有項目屬性。 -
MODIFIED NEW *:僅傳回UpdateItem操作之後出現的更新屬性。
-
傳回值
此陳述式不會傳回值,除非指定 returnvalues 參數。
注意
如果 DynamoDB 資料表中任何項目的 UPDATE 陳述式的 WHERE 子句未評估為 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" } } ] }
下列查詢會透過附加至清單 AwardDetail.Grammys 來更新 "Music" 中的項目。
UPDATE "Music" SET AwardDetail.Grammys =list_append(AwardDetail.Grammys,[2016]) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
下列查詢會透過從清單 AwardDetail.Grammys 中移除來更新 "Music" 資料表中的項目。
UPDATE "Music" REMOVE AwardDetail.Grammys[2] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
下列查詢會透過將 BillBoard 新增至映射 AwardDetail 來更新 "Music" 資料表中的項目。
UPDATE "Music" SET AwardDetail.BillBoard=[2020] WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
下列查詢會透過新增字串集屬性 BandMembers 來更新 "Music" 資料表中的項目。
UPDATE "Music" SET BandMembers =<<'member1', 'member2'>> WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'
下列查詢會透過將 newbandmember 新增至字串集 BandMembers 來更新 "Music" 資料表中的項目。
UPDATE "Music" SET BandMembers =set_add(BandMembers, <<'newbandmember'>>) WHERE Artist='Acme Band' AND SongTitle='PartiQL Rocks'