

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

# 第 4 步：修改分类账中的文档
<a name="getting-started-step-4"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

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

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

**提示**  
最佳做法是使用系统分配的文档 `id` 作为外键。虽然您可以定义作为唯一标识符的字段（例如车辆的 VIN），但文档的真正唯一标识符是`id`。字段都包含在文档元数据中，您可以在*提交视图*（系统定义的表格视图）中对其进行查询。  
有关 QLDB 中的视图的更多信息，请参阅[核心概念](ledger-structure.md)。了解有关元数据的更多信息，请参阅 [查询文档元数据](working.metadata.md)。

**修改文档**

1. [在 /qldb 上打开亚马逊 QLDB 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. 在导航窗格中，选择 **PartiQL 编辑器**。

1. 选择 `vehicle-registration` 分类账。
**注意**  
如果您使用控制台的自动**加载样本数据**功能设置分类账，请跳至步骤 6。

1. 如果您手动运行 `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`字段中。

1. 现在，在 `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'
   ```

1. 要将车辆的所有权转让给埃弗里特市的 Brent，请先使用以下语句从 `Person` 表中找到他的 `id`。

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

   接下来，使用这个 `id` 来更新 `VehicleRegistration` 表中的 `PrimaryOwner` 和 `City`。

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

   发布此语句，确认您修改了 `PrimaryOwner` 和 `City` 字段。

   ```
   SELECT r.Owners.PrimaryOwner, r.City
   FROM VehicleRegistration AS r
   WHERE r.VIN = '1N4AL11D75C109151'
   ```

1. 要将 Alexis 添加为汽车的次要车主，请找到她的 `Person id`。

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

   然后，使用以下 [FROM-INSERT](ql-reference.from.md) 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 步：查看文档修订历史记录](getting-started-step-5.md)。