

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 4：修改分類帳中的文件
<a name="getting-started-step-4"></a>

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

既然您擁有要使用的資料，您就可以開始變更 Amazon QLDB `vehicle-registration` 中分類帳中的文件。例如，請考慮使用 VIN 的 Audi A5`1N4AL11D75C109151`。此車輛最初由位於華盛頓州西雅圖的名為 Raul Lewis 的驅動程式擁有。

假設 Raul 將汽車賣給華盛頓州 Everett 的居民，名為 Brent Logan。然後，Brent 和 Alexis Pena 決定要結婚。Brent 想要將 Alexis 新增為註冊的次要擁有者。在此步驟中，下列資料處理語言 (DML) 陳述式示範如何在您的分類帳中進行適當的變更，以反映這些事件。

**提示**  
最佳實務是使用文件的系統指派`id`為外部金鑰。雖然您可以定義旨在成為唯一識別符的欄位 （例如，車輛的 VIN)，但文件的真正唯一識別符是其 `id`。此欄位包含在文件的中繼資料中，您可以在*遞交檢視*中查詢 （資料表的系統定義檢視）。  
如需 QLDB 中檢視的詳細資訊，請參閱[核心概念](ledger-structure.md)。若要進一步了解中繼資料，請參閱 [查詢文件中繼資料](working.metadata.md)。

**修改文件**

1. 在 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)：// 開啟 Amazon 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. 若要將車輛的所有權轉移到 Everett 城市的 Brent，請先`id`從包含下列陳述式的`Person`資料表中找到他的 。

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

   接下來，使用此選項`id`來更新 `VehicleRegistration` `City`資料表中的 `PrimaryOwner`和 。

   ```
   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)。