本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon QLDB 中的 FROM (INSERT、REMOVE 或 SET) 命令
重要
支援終止通知:現有客戶將可以使用 Amazon QLDB,直到 07/31/2025 的支援結束為止。如需詳細資訊,請參閱將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL
在 Amazon QLDB 中,開頭為 的陳述式FROM
是 PartiQL 延伸,可讓您在文件中插入和移除特定元素。您也可以使用此陳述式來更新文件中現有的元素,類似於 UPDATE命令。
注意
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取,請參閱 Amazon QLDB 中的標準許可模式入門。
語法
FROM-INSERT
在現有文件中插入新的元素。若要將新的最上層文件插入資料表,您必須使用 INSERT。
FROM
table_name
[ AStable_alias
] [ BYid_alias
] [ WHEREcondition
] INSERT INTOelement
VALUEdata
[ ATkey_name
]
FROM-REMOVE
移除文件中的現有元素,或移除整個最上層文件。後者與傳統DELETE語法在語意上相同。
FROM
table_name
[ AStable_alias
] [ BYid_alias
] [ WHEREcondition
] REMOVEelement
FROM-SET
更新文件中的一或多個元素。如果元素不存在,則會插入。這在同義詞上與傳統UPDATE語法相同。
FROM
table_name
[ AStable_alias
] [ BYid_alias
] [ WHEREcondition
] SETelement
=data
[,element
=data
, ... ]
參數
table_name
-
包含要修改之資料的使用者資料表名稱。DML 陳述式僅支援預設使用者檢視。每個陳述式只能在單一資料表上執行。
在此子句中,您也可以包含一或多個巢狀在指定資料表中的集合。如需詳細資訊,請參閱巢狀集合。
- AS
table_alias
-
(選用) 使用者定義的別名,範圍涵蓋要修改的資料表。用於
SET
、REMOVE
INSERT INTO
、 或WHERE
子句的所有資料表別名都必須在FROM
子句中宣告。AS
關鍵字為選用。 - BY
id_alias
-
(選用) 使用者定義的別名,可繫結至結果集中每個文件的
id
中繼資料欄位。別名必須使用關鍵字在FROM
子句中宣告BY
。當您想要在查詢預設使用者檢視時篩選文件 ID 時,此功能非常有用。如需詳細資訊,請參閱使用 BY 子句查詢文件 ID。 - WHERE
condition
-
要修改之文件的選擇條件。
注意
如果您省略
WHERE
子句,則會修改資料表中的所有文件。 元素
-
要建立或修改的文件元素。
data
-
元素的新值。
- AT
key_name
-
在要修改的文件內新增的金鑰名稱。您必須指定對應的
VALUE
以及金鑰名稱。這是在文件中插入AT
特定位置的新值所必需。
巢狀集合
雖然您只能在單一資料表上執行 DML 陳述式,但您可以將該資料表中文件中的巢狀集合指定為其他來源。您為巢狀集合宣告的每個別名都可以在 WHERE
子句和 SET
、 INSERT INTO
或 REMOVE
子句中使用。
例如,下列陳述式的FROM
來源同時包含VehicleRegistration
資料表和巢狀Owners.SecondaryOwners
結構。
FROM VehicleRegistration r, @r.Owners.SecondaryOwners o WHERE r.VIN = '1N4AL11D75C109151' AND o.PersonId = 'abc123' SET o.PersonId = 'def456'
此範例會更新SecondaryOwners
清單中具有 PersonId
之 的特定元素,VehicleRegistration
該清單'abc123'
位於文件中具有 VIN
之 '1N4AL11D75C109151'
。此表達式可讓您依清單的值而非索引來指定清單的元素。
傳回值
documentId
– 您更新或刪除的每個文件的唯一 ID。
範例
修改文件中的 元素。如果元素不存在,則會插入。
FROM Vehicle AS v WHERE v.VIN = '1N4AL11D75C109151' AND v.Color = 'Silver' SET v.Color = 'Shiny Gray'
修改或插入系統指派的文件id
中繼資料欄位上的 元素和篩選條件。
FROM Vehicle AS v BY v_id WHERE v_id = '
documentId
' SET v.Color = 'Shiny Gray'
修改 文件內Owners.SecondaryOwners
清單中第一個元素PersonId
的欄位。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
移除文件中的現有元素。
FROM Person AS p WHERE p.GovId = '111-22-3333' REMOVE p.Address
從資料表中移除整個文件。
FROM Person AS p WHERE p.GovId = '111-22-3333' REMOVE p
移除VehicleRegistration
資料表中文件中Owners.SecondaryOwners
清單的第一個元素。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' REMOVE r.Owners.SecondaryOwners[0]
在Vehicle
資料表中的文件中插入 {'Mileage':26500}
做為最上層的名稱值對。
FROM Vehicle AS v WHERE v.VIN = '1N4AL11D75C109151' INSERT INTO v VALUE 26500 AT 'Mileage'
在VehicleRegistration
資料表中的文件Owners.SecondaryOwners
欄位中附加{'PersonId':'abc123'}
為名稱/值對。請注意, Owners.SecondaryOwners
必須已存在,且必須是清單資料類型,此陳述式才會有效。否則, 子INSERT INTO
句中AT
需要關鍵字。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
插入 {'PersonId':'abc123'}
做為文件內現有Owners.SecondaryOwners
清單中的第一個元素。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
將多個名稱/值對附加到文件中的現有Owners.SecondaryOwners
清單。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
使用驅動程式以程式設計方式執行
若要了解如何使用 QLDB 驅動程式以程式設計方式執行此陳述式,請參閱驅動程式入門中的下列教學課程: