本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 UPDATE
陳述式來修改 Amazon DynamoDB 資料表中項目內一或多個屬性的值。
注意
您一次只能更新一個項目,因為您無法發出可刪除多個項目的單個 DynamoDB PartiQL 陳述式。如需更新多個項目的相關資訊,請參閱 使用 DynamoDB 專用 PartiQL 執行交易 或 使用 DynamoDB 專用 PartiQL 執行批次操作。
語法
UPDATE
table
[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'