跳转到主要内容

表格和列

UPSERT 查询行为

UPSERT 滑块设置为 ON

按 ID UPSERT

如果输入 XML 中存在键列,则会向数据库发出查询以确定是否存在具有匹配键的任何记录:
匹配结果更新;没有匹配结果导致插入。 如果输入 XML 中不存在键列,则始终插入记录:

按非键列进行 UPSERT

通过选择表的主键,向数据库发出查询,以确定是否存在所选 UPSERT By 列包含匹配值的记录:
SELECT 查询始终以 SELECT 语句中表的键列为目标。如果匹配成功,则输入 XML 中的数据将更新到数据源中。如果没有匹配,则插入记录。
如果输入中未指定所选的 UPSERT By 列,则查找将与 NULL 值一起使用,如以下查询所示:

使用自定义查询

还可以编写自定义查询来选择 UPSERT 键。此选项允许使用比单列匹配更复杂的逻辑来执行查找。考虑以下查询:
在此示例中,必须选择表的键列,以便为 UPDATE 提供足够的条件。@OrderID 语法用于引用匹配输入 XML 中的值。还可以使用静态值:'Active' 周围的引号表示该子句使用静态值。 同样,键列的成功匹配用于形成更新请求。如果没有匹配,则插入记录。
当对数据库插入的行为有疑问时,请查看 UPSERT 尝试的 .log 文件:用于指导该行为的逻辑的完整细分将发送到日志文件。

UPSERT 滑块设置为 OFF

当滑块设置为 OFF 时,端口只需将所有查询插入数据库即可。检查输入映射的代码视图显示表的 action 属性是 insert
无论主键是否存在,向表发出的所有查询都被视为插入。要根据表更新所有收到的记录,可以将此操作关键字设置为 update,如以下代码片段所示:
当操作定义为 update 时,应用程序期望表的键列(例如 Id)存在。如果未提供键列,则 UPDATE 命令的效果可能会因目标数据库类型而异,因此可能会看到更改的行数比预期多,或者根本没有更改。

知行之桥工作流示例