本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
UPDATE亚马逊中的命令 QLDB
重要
终止支持通知:现有客户可以在2025年7月31日终止支持QLDB之前使用亚马逊。有关更多详细信息,请参阅将亚马逊QLDB账本迁移到亚马逊 Aurora Postgr SQL
在 Amazon 中QLDB,使用UPDATE
命令修改文档中一个或多个元素的值。如元素不存在,则将其插入。
您也可以使用此命令在文档中显式插入和删除特定元素,类似于FROM(INSERTREMOVE、或SET)语句。
注意
要了解如何控制对特定表运行此 PartiQL 命令的访问权限,请参阅。开始使用 Amazon 中的标准权限模式 QLDB
语法
UPDATE-SET
更新文档中的一项或多项元素。如元素不存在,则将其插入。这在语义上与 FROM- 语SET句相同。
UPDATE
table_name
[ AStable_alias
] [ BYid_alias
] SETelement
=data
[,element
=data
, ... ] [ WHEREcondition
]
UPDATE-INSERT
在现有文档内插入新元素。要在表格中插入新顶级文档,必须使用INSERT。
UPDATE
table_name
[ AStable_alias
] [ BYid_alias
] INSERT INTOelement
VALUEdata
[ ATkey_name
] [ WHEREcondition
]
UPDATE-REMOVE
移除文档中的现有元素,或者移除整个顶级文档。后者在语义上与传统 DELETE 语法相同。
UPDATE
table_name
[ AStable_alias
] [ BYid_alias
] REMOVEelement
[ WHEREcondition
]
参数
table_name
-
包含要修改数据的用户表的名称。DML仅在默认用户视图中支持语句。每条语句只能在单个表中运行。
- AS
table_alias
-
(可选)用户定义的别名,其范围涵盖要修改的表。
AS
关键字是可选的。 - BY
id_alias
-
(可选)用户定义的别名,它绑定至结果集中每个文档的
id
元数据字段。必须使用BY
关键字在UPDATE
子句中声明别名。当您想在查询默认用户视图的同时筛选文档 ID,这很有用。有关更多信息,请参阅 通过 BY 子句查询文档 ID。 element
-
待创建或修改的文档元素。
data
-
元素新值。
- AT
key_name
-
在要修改的文档中添加的密钥名称。您必须指定相应的
VALUE
以及秘钥名称。这是在文档中的特定位置插入新AT
值的必要条件。 - WHERE
condition
-
(必需)要修改的文档的选择条件。
注意
如果省略 WHERE
子句,则表中的所有文档都被修改。
返回值
documentId
— 您更新的每个文档的唯一 ID。
示例
更新文档中的表。如果此字段不存在,则将其插入。
UPDATE Person AS p SET p.LicenseNumber = 'HOLLOR123ZZ' WHERE p.GovId = '111-22-3333'
在系统分配的文档id
元数据字段上进行筛选。
UPDATE Person AS p BY pid SET p.LicenseNumber = 'HOLLOR123ZZ' WHERE pid = '
documentId
'
覆盖整个文档。
UPDATE Person AS p SET p = { 'FirstName' : 'Rosemarie', 'LastName' : 'Holloway', 'DOB' : `1977-06-18T`, 'GovId' : '111-22-3333', 'GovIdType' : 'Driver License', 'Address' : '4637 Melrose Street, Ellensburg, WA, 98926' } WHERE p.GovId = '111-22-3333'
修改文档中Owners.SecondaryOwners
列表中第一个元素的PersonId
字段。
UPDATE VehicleRegistration AS r SET r.Owners.SecondaryOwners[0].PersonId = 'abc123' WHERE r.VIN = '1N4AL11D75C109151'
{'Mileage':26500}
以顶级名称/值对的形式插入到表格中的文档中。Vehicle
UPDATE Vehicle AS v INSERT INTO v VALUE 26500 AT 'Mileage' WHERE v.VIN = '1N4AL11D75C109151'
{'PersonId':'abc123'}
以名称/值对的形式附加至VehicleRegistration
表格中Owners.SecondaryOwners
文档的字段中。请注意,语句Owners.SecondaryOwners
必须已经存在且必须是列表数据类型才会生效。否则,INSERT INTO
子句中必须使用关键字AT
。
UPDATE VehicleRegistration AS r INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' } WHERE r.VIN = '1N4AL11D75C109151'
将{'PersonId':'abc123'}
以文档现有Owners.SecondaryOwners
列表中的首个元素插入。
UPDATE VehicleRegistration AS r INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0 WHERE r.VIN = '1N4AL11D75C109151'
将多个名称/值对附加到文档中的现有Owners.SecondaryOwners
列表中。
UPDATE VehicleRegistration AS r INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >> WHERE r.VIN = '1N4AL11D75C109151'
移除文档中的现有元素。
UPDATE Person AS p REMOVE p.Address WHERE p.GovId = '111-22-3333'
从表格中删除整个文档。
UPDATE Person AS p REMOVE p WHERE p.GovId = '111-22-3333'
移除VehicleRegistration
表格中文档中Owners.SecondaryOwners
列表的第一个元素。
UPDATE VehicleRegistration AS r REMOVE r.Owners.SecondaryOwners[0] WHERE r.VIN = '1N4AL11D75C109151'
使用驱动程序以编程方式运行
要了解如何使用驱动程序以编程方式运行此语句,请参阅QLDB驱动程序入门中的以下教程: