标识列
在复制 CDC Replication Engine for Db2® Database 支持的两种 DB2® LUW 标识列时,需要考虑一些问题: GENERATED ALWAYS 和 GENERATED BY DEFAULT。
CDC Replication Engine for Db2 Database 现在支持两种类型的 DB2 LUW 标识列: GENERATED ALWAYS 和 GENERATED BY DEFAULT。 当复制这些标识列时,应考虑以下各项。
GENERATED ALWAYS 标识列
您可以将源表中的 GENERATED ALWAYS 标识列映射到 管理控制台中的目标列。
目标表中的 GENERATED ALWAYS 列为只读且不能映射。
GENERATED BY DEFAULT 标识列
CDC Replication 处理源表中的 GENERATED BY DEFAULT 标识列,与没有标识属性的列类似。 源列的值映射至目标标识列时将被保留。 如果将列的初始值设置为数据库缺省值,那么目标标识列将使用数据库提供的值。 有关如何将目标列的初始值设置为 数据库缺省值的更多信息,请参阅 管理控制台 文档。
将数据复制至包含 GENERATED BY DEFAULT 标识列的表或从中复制数据时,请考虑以下各项:
- CDC Replication不会应用将映射的初始值设置为 Database Default 的任何列。 CDC Replication 在应用数据时跳过该列,并且数据库提供了值。
- 无法在表达式中引用初始值设置为数据库缺省值的目标标识列。 对相似情况下的源列没有限制。
- 用户出口无法访问 管理控制台中初始值设置为 数据库缺省值 的任何目标列的数据。
用户出口和标识列
CDC Replication API 中的 isDataAvailable(int) 可以在用户出口中用于确定是否存在特定列的数据。 对于在 管理控制台中将初始值设置为 数据库缺省值 的目标列,此方法将返回 false。 如果尝试检索映射至目标标识列的列中的值时,将抛出异常。