创建用于更改捕获的表时,通过在子模式中选择起始记录并将集合关系导航至更改捕获的最终目标记录来映射路径。
映射中的集合导航路径只能是从所有者至成员记录。在收集相关信息时,关联服务被限制为向上导航所有者链。
仅捕获对路径中最终记录的更改。除非映射单独的表来捕获对路径中任何其他记录的更改,否则对该记录的更改会被忽略。但是,如果相关记录中的字段为数据库模式中的已更改记录提供上下文,那么需要映射这些字段。例如,如果 CA-IDMS 模式包含与某个集合的职员记录相关的薪水记录,那么需要将 EMPLOYEE 记录中的职员标识包括在分发服务发送的消息中,以插入特定职员的 SALARY 记录的实例。
最终记录以外的记录中的更改数据是在更新事务外部收集的。收集此信息的等待时间包括两部分,更改捕获代理程序将更改发送至关联服务的时间加上打包更改并将其转发至分发服务的时间。在事务与信息转发至分发服务的时间之间,相关更改数据本身可能会被更新或删除。因此,仅应映射相关记录中不会更改的标识字段,如主键或外键。
如果相关记录在更新事务的时间与更改转发至分发服务的时间之间被删除,那么相关字段会作为 SQL NULL 传递至分发服务,以指示该信息不可用。
您可能需要修改应用程序模式,以确保在记录删除的情况下可以收集相关数据信息。在某些情况下,CA-IDMS 不会将所有者指针保存在记录前缀中,因此记录删除时所有者信息不可用。在这些情况下不支持更改捕获。
如果需要所有者信息以进行删除,那么必须将路径中的一个或多个集合定义更改为包括 LINKED TO OWNER 语句,以便所有者指针可保留在记录前缀信息中。有关更新模式的更多信息,请参阅 CA/CA-IDMS 参考手册。
在某些情况下,可能需要使用模式中的不同路径从多个记录所有者处收集信息。因为仅支持对模式中的单个路径进行更改捕获,所以不能在单个表映射中从多个路径收集标识字段。但是,因为发送至分发服务的更改消息基于数据库中的单个工作单元,所以可为更改捕获定义多个表。
例如,在 CA-IDMS 职员演示模式下,假定您关心捕获职员记录更改的情况,但职员信息发生更改时您需要与该职员相关联的办公室代码和部门标识。可将路径 DEPARTMENT->EMPLOYEE 映射为一个表,并将 OFFICE->EMPLOYEE 映射为第二个表,以在职员信息发生更改时同时收集部门标识和办公室标识。接收更改数据的应用程序可将两个被映射表中的信息组合成对职员记录的更改,并对两个表映射自动触发更改消息。