第 4 步:修改分类账中的文档 - Amazon Quantum Ledger Database (Amazon QLDB)

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

第 4 步:修改分类账中的文档

现在您有了要处理的数据,可以开始在 Amazon QLDB 中对 vehicle-registration 分类账文档进行更改。例如,以带VIN 1N4AL11D75C109151 的奥迪 A5 为例。这辆车最初属于华盛顿州西雅图的一位名叫 Raul Lewis 的司机。

假设 Raul 把车卖给了华盛顿州埃弗雷特的一位名叫 Brent Logan 的居民。然后,Brent和 Alexis Pena 决定结婚。Brent 想把 Alexis 列为第二车主。在此步骤中,以下数据操作语言 (DML) 语句演示了如何在分类账中进行适当的更改以反映这些事件。

提示

最佳做法是使用系统分配的文档 id 作为外键。虽然您可以定义作为唯一标识符的字段(例如车辆的 VIN),但文档的真正唯一标识符是id。字段都包含在文档元数据中,您可以在提交视图(系统定义的表格视图)中对其进行查询。

有关 QLDB 中的视图的更多信息,请参阅核心概念。了解有关元数据的更多信息,请参阅 查询文档元数据

修改文档
  1. 通过以下网址打开 Amazon QLDB 控制台:https://console.aws.amazon.com/qldb

  2. 在导航窗格中,选择 PartiQL 编辑器

  3. 选择 vehicle-registration 分类账。

    注意

    如果您使用控制台的自动加载样本数据功能设置分类账,请跳至步骤 6。

  4. 如果您手动运行 INSERT 语句来加载示例数据,请继续执行这些步骤。

    要最初将 Raul 注册为这辆车的车主,首先要在 Person表中找到他由系统分配的文件 id。字段都包含在文档元数据中,您可以在提交视图(系统定义的表格视图)中对其进行查询。

    在查询编辑器窗口中输入以下语句,然后选择 运行

    SELECT metadata.id FROM _ql_committed_Person AS p WHERE p.data.FirstName = 'Raul' and p.data.LastName = 'Lewis'

    前缀_ql_committed_是保留的前缀,表示您要查询的Person 表的已提交视图。在此视图中,您的数据嵌套至data字段中,元数据嵌套至metadata字段中。

  5. 现在,在 UPDATE 语句中使用这个 id 来修改VehicleRegistration表中的相应文档。输入以下语句并选择运行

    UPDATE VehicleRegistration AS r SET r.Owners.PrimaryOwner.PersonId = '294jJ3YUoH1IEEm8GSabOs' --replace with your id WHERE r.VIN = '1N4AL11D75C109151'

    发布此语句,确认您修改了 Owners 字段。

    SELECT r.Owners FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151'
  6. 要将车辆的所有权转让给埃弗里特市的 Brent,请先使用以下语句从 Person 表中找到他的 id

    SELECT metadata.id FROM _ql_committed_Person AS p WHERE p.data.FirstName = 'Brent' and p.data.LastName = 'Logan'

    接下来,使用这个 id 来更新 VehicleRegistration 表中的 PrimaryOwnerCity

    UPDATE VehicleRegistration AS r SET r.Owners.PrimaryOwner.PersonId = '7NmE8YLPbXc0IqesJy1rpR', --replace with your id r.City = 'Everett' WHERE r.VIN = '1N4AL11D75C109151'

    发布此语句,确认您修改了 PrimaryOwnerCity 字段。

    SELECT r.Owners.PrimaryOwner, r.City FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151'
  7. 要将 Alexis 添加为汽车的次要车主,请找到她的 Person id

    SELECT metadata.id FROM _ql_committed_Person AS p WHERE p.data.FirstName = 'Alexis' and p.data.LastName = 'Pena'

    然后,使用以下 FROM-INSERT DML 语句将这个 id 插入到 SecondaryOwners 列表中。

    FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : '5Ufgdlnj06gF5CWcOIu64s' } --replace with your id

    发布此语句,确认您修改了 SecondaryOwners

    SELECT r.Owners.SecondaryOwners FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151'

若要查看 vehicle-registration 分类账中的这些更改,请参阅第 5 步:查看文档修订历史记录