

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

# Amazon QLDB 中的 REDACT\$1REVISION 預存程序
<a name="ql-stored-procedures.redact_revision"></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/)。

**注意**  
任何在 2021 年 7 月 22 日之前建立的分類帳目前不符合修訂資格。您可以在 Amazon QLDB 主控台上檢視分類帳的建立時間。

在 Amazon QLDB 中，使用`REDACT_REVISION`預存程序永久刪除索引儲存和日誌儲存中的個別非作用中文件修訂。此預存程序會刪除指定修訂中的所有使用者資料。不過，它會保留日誌序列和文件中繼資料，包括文件 ID 和雜湊，保持不變。*此操作不可復原。*

指定的文件修訂版本必須是歷史記錄中的非作用中修訂。文件的最新作用中修訂不符合修訂資格。

在您執行此預存程序提交修訂請求後，QLDB 會以非同步方式處理資料修訂。修訂完成後，指定的修訂 （由`data`結構表示） 的使用者資料會替換為新的`dataHash`欄位。此欄位的值是已移除`data`結構的 [Amazon Ion](ion.md) 雜湊。因此，分類帳會維護其整體資料完整性，並透過現有的驗證 API 操作以密碼編譯方式進行驗證。

如需使用範例資料進行修訂操作的範例，請參閱 [編輯範例](working.redaction.md#working.redaction.example)中的 [編輯文件修訂](working.redaction.md)。

**注意**  
若要了解如何控制在特定資料表上執行此 PartiQL 命令的存取，請參閱 [Amazon QLDB 中的標準許可模式入門](getting-started-standard-mode.md)。

**Topics**
+ [修訂考量和限制](#ql-stored-procedures.redact_revision.considerations)
+ [語法](#ql-stored-procedures.redact_revision.syntax)
+ [引數](#ql-stored-procedures.redact_revision.arguments)
+ [傳回值](#ql-stored-procedures.redact_revision.return)
+ [範例](#ql-stored-procedures.redact_revision.examples)

## 修訂考量和限制
<a name="ql-stored-procedures.redact_revision.considerations"></a>

開始使用 Amazon QLDB 中的資料修訂之前，請務必檢閱下列考量和限制：
+ `REDACT_REVISION` 預存程序以個別非作用中文件修訂中的使用者資料為目標。若要修訂多個修訂，您必須為每個修訂執行一次預存程序。您可以編輯每筆交易的一個修訂。
+ 若要修訂文件修訂中的特定欄位，您必須先使用單獨的資料處理語言 (DML) 陳述式來修改修訂。如需詳細資訊，請參閱[在修訂中編輯特定欄位](working.redaction.md#working.redaction.field)。
+ QLDB 收到修訂請求後，您就無法取消或修改請求。若要確認修訂是否已完成，您可以檢查修訂的`data`結構是否已取代為 `dataHash` 欄位。如需進一步了解，請參閱 [檢查編輯是否完成](working.redaction.md#working.redaction.check-completion)。
+ 編輯不會影響在 QLDB 服務之外複寫的任何 QLDB 資料。這包括任何匯出至 Amazon S3 和串流至 Amazon Kinesis Data Streams。您必須使用其他資料保留方法來管理存放在 QLDB 外部的任何資料。
+ 編輯不會影響日誌中記錄的 PartiQL 陳述式中的常值。最佳實務是，您應該使用變數預留位置而非常值，以程式設計方式執行參數化陳述式。預留位置會以問號 (`?`) 形式寫入日誌中，而不是可能需要修改的任何敏感資訊。

  若要了解如何使用 QLDB 驅動程式以程式設計方式執行 PartiQL 陳述式，請參閱 中每個支援程式設計語言的教學課程[驅動程式入門](getting-started-driver.md)。

## 語法
<a name="ql-stored-procedures.redact_revision.syntax"></a>

```
EXEC REDACT_REVISION `block-address`, 'table-id', 'document-id'
```

## 引數
<a name="ql-stored-procedures.redact_revision.arguments"></a>

`*block-address*`  
要修訂之文件修訂的日誌區塊位置。地址是具有兩個欄位的 Amazon Ion 結構： `strandId`和 `sequenceNo`。  
這是以反引號表示的 Ion 常值。例如：  

```
`{strandId:"JdxjkR9bSYB5jMHWcI464T", sequenceNo:17}`
```
若要了解如何尋找區塊地址，請參閱[查詢文件中繼資料](working.metadata.md)。

'*table-id*'  
您想要修訂文件的資料表的唯一 ID，以單引號表示。  
若要了解如何尋找資料表 ID，請參閱 [查詢系統目錄](working.catalog.md)。

'*document-id*'  
要修訂修訂的唯一文件 ID，以單引號表示。  
若要了解如何尋找文件 ID，請參閱 [查詢文件中繼資料](working.metadata.md)。

## 傳回值
<a name="ql-stored-procedures.redact_revision.return"></a>

Amazon Ion 結構，代表要修訂的文件修訂，格式如下。

```
{
  blockAddress: {
    strandId: String,
    sequenceNo: Int
  },
  tableId: String,
  documentId: String,
  version: Int
}
```

**傳回結構欄位**
+ `blockAddress` – 要修訂修訂的日誌區塊位置。地址有兩個欄位。
  + `strandId` – 包含 區塊之日誌鏈的唯一 ID。
  + `sequenceNo` – 索引號碼，指定 鏈中區塊的位置。
+ `tableId` – 您要修訂之資料表的唯一 ID。
+ `documentId` – 要修訂修訂的唯一文件 ID。
+ `version` – 要修訂的文件修訂版本編號。

以下是具有範例資料的傳回結構範例。

```
{
  blockAddress: {
    strandId: "CsRnx0RDoNK6ANEEePa1ov",
    sequenceNo: 134
  },
  tableId: "6GZumdHggklLdMGyQq9DNX",
  documentId: "IXlQPSbfyKMIIsygePeKrZ",
  version: 0
}
```

## 範例
<a name="ql-stored-procedures.redact_revision.examples"></a>

```
EXEC REDACT_REVISION `{strandId:"7z2P0AyQKWD8oFYmGNhi8D", sequenceNo:7}`, '8F0TPCmdNQ6JTRpiLj2TmW', '05K8zpGYWynDlEOK5afDRc'
```