Amazon QLDB 中的更新命令 - Amazon Quantum Ledger Database (Amazon QLDB)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon QLDB 中的更新命令

在 Amazon QLDB 中,使用UPDATE命令来修改文档中一个或多个元素的值。如元素不存在,则将其插入。

您也可以使用此命令在文档中显式插入和删除特定元素,类似于FROM(插入、删除或设置)语句。

注意

要了解如何控制对特定表运行此 PartiQL 命令的访问权限,请参阅。请参阅《Amazon QLDB 开发人员》中的标准权限模式入门

语法

UPDATE-SET

更新文档中的一项或多项元素。如元素不存在,则将其插入。这在语义上与 FROM-SET 语句相同。

UPDATE table_name [ AS table_alias ] [ BY id_alias ] SET element = data [, element = data, ... ] [ WHERE condition ]

UPDATE-INSERT

在现有文档内插入新元素。要在表格中插入新顶级文档,必须使用INSERT

UPDATE table_name [ AS table_alias ] [ BY id_alias ] INSERT INTO element VALUE data [ AT key_name ] [ WHERE condition ]

UPDATE-REMOVE

移除文档中的现有元素,或者移除整个顶级文档。后者在语义上与传统 删除 语法相同。

UPDATE table_name [ AS table_alias ] [ BY id_alias ] REMOVE element [ WHERE condition ]

参数

table_name

包含要修改数据的用户表的名称。仅默认用户视图支持 DML 语句。每条语句只能在单个表中运行。

AS table_alias

(可选)用户定义的别名,其范围涵盖要修改的表。AS 关键字是可选的。

BY id_alias

(可选)用户定义的别名,它绑定至结果集中每个文档的 id元数据字段。必须使用 BY 关键字在 UPDATE 子句中声明别名。当您想在查询默认用户视图的同时筛选文档 ID,这很有用。有关更多信息,请参阅通过 BY 子句查询文档 ID

元素

待创建或修改的文档元素。

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 驱动程序以编程方式运行此语句,请参阅驱动程序入门中的以下教程: