表格和列
UPSERT 查询行为
在表结构模式和映射模式下,均按列配置 UPSERT 设置。右键单击某列,然后从上下文菜单中选择 UPSERT 设置。
随即打开 UPSERT 设置 对话框。默认情况下,启用 UPSERT 设置 开关为 ON,这意味着端口会先检查目标中是否已存在记录,再决定执行 INSERT 还是 UPDATE。

用于确定记录是否存在的查询由以下部分中描述的逻辑控制。
UPSERT 设置已启用
当 启用 UPSERT 设置 处于开启状态时,查询行为取决于在 UPSERT 设置 列表中选择的选项:UPSERT by(按单列匹配)或 Query to select UPSERT key(使用自定义查找查询)。
按 ID UPSERT
在 UPSERT 设置 列表中选择 UPSERT by 并选择表的键列后,端口会发出查询,以确定是否存在具有匹配键值的任何记录:按非键列进行 UPSERT
在 UPSERT 设置 列表中选择 UPSERT by 并选择非键列后,端口会发出查询,以确定是否存在该列包含匹配值的记录,SELECT 语句以表的主键为目标(以下示例演示向 Orders 表执行 UPSERT):如果输入中未指定所选的 UPSERT by 列,则查找将与 NULL 值一起使用,如以下查询所示:
使用自定义查询
在 UPSERT 设置 列表中选择 Query to select UPSERT key 后,可以编写自定义查询来确定 UPSERT 键。这样可以使用比单列匹配更复杂的逻辑来执行查找。考虑以下查询:@OrderID 语法用于引用匹配输入 XML 中的值。还可以使用静态值:'Active' 周围的引号表示该子句使用静态值。
同样,键列的成功匹配用于形成更新请求。如果没有匹配,则插入记录。
UPSERT 设置已禁用
要对某列禁用 UPSERT 行为,请打开 UPSERT 设置 对话框(右键单击目标列并选择 UPSERT 设置),将 启用 UPSERT 设置 切换为 OFF,然后单击 应用。 禁用 UPSERT 设置后,端口仅发出 INSERT 查询。检查输入映射的代码视图显示表的action 属性是 insert:
update,如以下代码片段所示: