適用於 DynamoDB 的 PartiQL Update 陳述式 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

適用於 DynamoDB 的 PartiQL Update 陳述式

使用 UPDATE 陳述式來修改 Amazon DynamoDB 資料表中項目內一或多個屬性的值。

注意

您一次只能更新一個項目,因為您無法發出可刪除多個項目的單個 DynamoDB PartiQL 陳述式。如需更新多個項目的相關資訊,請參閱 使用 DynamoDB 專用 PartiQL 執行交易使用 DynamoDB 專用 PartiQL 執行批次操作

語法

UPDATE table [SET | REMOVE] path [= data] […] WHERE condition [RETURNING returnvalues] <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'