# 使用更改表

除了将更改从源端点表复制到目标端点中的相应表之外， 还可以将更改复制到目标端点中的相应更改表。将更改应用于目标表时，此过程同时发生。您可以选择是仅将更改复制到目标，还是将更改存储在更改表中，或者两者兼而有之。有关详细信息，请参阅下面的[使用更改表模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/use_change_table_model.htm#ar_chg_tbls_3080803564_ciheeejg)。

信息注释

应用于源的*不*更改源数据的 UPDATE 将应用于目标，但不会应用于相应的更改表。例如，如果源中列 A 上的 UPDATE 操作将所有大于 10 的值更改为 1，并且列 A 中的一条记录*已*为 1，则该记录的 UPDATE 将不会写入更改表。

更改表与正在复制的表具有相同的名称，但添加了 `__ct` 后缀。

除了从源表中选择的列之外，更改表还包括特殊的头列，这些表头列提供了有关行所代表的更改的更多信息，如操作、事务和时间戳。这使您可以使用 SQL 查询语言对更改事件进行各种分析，如欺诈检测、趋势分析、业务流程触发和灾难恢复。有关读取更改表的详细信息，请参阅读取更改表。

## 处理截断操作

TRUNCATE 操作*不会*截断更改表。相反，将向表中添加一条附加记录 `operation=TRUNCATE.`

关于实际的目标表，如果同时启用了“应用更改”*和*“存储更改”复制选项，则目标表将被截断。

要将 TRUNCATE 操作应用于更改表和目标表（对于支持 TRUNCATE 的源）：

1. 在任务设置的“存储更改设置”选项卡中，确保从 DDL 选项下拉列表中选择了应用到更改表（默认值）。
2. 在任务设置的“应用更改设置”选项卡中，确保从TRUNCATE 源表时下拉列表中选择 TRUNCATE（截断）目标表（默认值）。

## 使用更改表模型

使用更改表时，可以确定是将更改存储在更改表中，还是将更改应用于目标表，或者同时存储和应用更改。您可以在定义复制任务时确定这一点。有关此设置的详细信息，请参阅存储更改设置。

在同时应用和存储更改的情况下，以下情况为 true：

* 目标表和更改表必须在同一个端点中，尽管它们可以具有不同的模式。例如，更改表将包含元数据头。

  有关更改模式的更多详细信息，请参阅重命名更改表模式。

* 应用于更改表的更改将与源数据库中相应事务中执行的更改完全相同。因此，在选择保留事务一致性选项的情况下使用事务性应用模式或批量优化应用模式时，更改将作为单个事务处理。

  例外情况是遇到错误并且数据任务切换到“逐个”应用模式，以确定是哪种更改操作造成了错误。

* 应用和存储相同的数据列，但更改表头列除外，这些列仅添加到存储的更改表中。