如何在更改一个字段时创建自动更新记录的过程

How to create a automatic process to update record when one field is changed

一段时间以来,我一直在努力解决这个问题,需要您的帮助才能实现。我在 informatica 中创建了一个 ETL 过程,该过程从 sql 服务器(源数据库)获取用户并将它们添加到 mysql(目标数据库)中 该过程涉及多个步骤。

第 1 步。- 将 source.dbo.[用户] (SQL 服务器) 移动到目标。user 用户 table 看起来像这样

userid   username  profile  disabled
1        A         A         0
2        B         A         0
3        c         B         1

当禁用状态更改和添加新记录时,此 table 被更新

第 2 步 - 然后将新用户插入 target.worker table; 为了仅添加工作人员中不存在的用户 table 使用左连接:

select wrk.*, usr.* from target.worker 
wrk left join target.user usr on wrk.userid=usr.userid 
where wrk.usrid is null;

工人table看起来像这样

id   username   userid   disabled
1    A          1        0
2    B          A        0

然后进程运行后userid 3将被添加到worker table

下面是我想不通的部分: 当他们的禁用状态也发生变化时,我需要更新 worker table 中的用户。 目前我已经将设置映射为从左加入的用户添加工作人员以仅添加当前工作人员 table 中不存在的那些用户。 但是,当相应用户 table

中的禁用状态发生变化时,我如何映射它以便更新工作人员 table 中的那些记录

我希望这是有道理的。 为了让它更简单:

当 target.[user] 为

userid   username  profile  disabled
1        A         A         0
2        B         A         0
3        c         B         1
4        D         C         0

并且 target.worker 是

userid   username  profile  disabled
1        A         A         0
2        B         A         0
3        c         B         0

我需要一个带有过滤器或解释过程的连接查询,以便工作人员 table 既插入新记录又更改现有记录的禁用状态:所以它看起来像这样

 userid   username  profile  disabled
    1        A         A         0
    2        B         A         0
    3        c         B         1 <--- Record updated
    4        D         C         0 <-- New record added

在 target.worker 上使用查找来验证记录是否已存在。如果确实如此,NewLookupRow 将为 2(更新),在更新转换中使用 DD_UPDATE。如果为 1,则使用 DD_INSERT。在 Update Trans 之前使用 NewLookupRow != 0 Filter 来跳过目标中已有的行。