格式
UPSERT()函数的格式为:
- 目标表: 要插入/更新数据的目标表单。
- 主条件: 主条件用于定位更新哪条数据。主条件是由逻辑函数构成:
- 子条件:
- 目标列:
- 目标值: 指目标列要更新成的值,目标值可以由当前录入表的某个组件值,要更新目标表某个组件值,固定值通过其他函数组合而成。
使用案例
案例一:普通组件数据插入时,更新目标表的普通组件数据
- 使用的表单
- 需求
- 公式配置详情&公式解析

- 目标表: 存货表。
- 主条件 :EQ(存货表.商品名, 商品名)。更新的数据是存货表中商品名为录入表录入数据的商品名。
- 子条件 :由于更新的是「存货表」中的普通组件:商品名和存货量,不涉及明细,因此子条件填写为""
- 目标列: 存货表.商品名。
- 目标值: 商品名。 如果查找不到数据,在插入数据时,存货表的商品名值为进货表的商品名值。
- 目标列: 存货表.存货量
- 目标值: 存货表.存货量 + 进货量。 根据条件匹配到存货商品后,在原来存货量的基础上加上这次的进货量。
案例二:子表单组件数据插入时,更新目标表的普通组件数据
- 使用的表单
- 需求
- 公式配置详情&公式解析

案例三:普通组件数据插入时,更新到目标表的子表单组件数据
- 使用的表单
- 需求
- 公式配置详情&公式解析


注意事项
- 不能既更新普通组件,又要更新明细下的值。如果有这种场景,请分成两个 UPSERT 函数,一个用来更新普通组件,一个用来更新明细下的数据。
- 在上面讲解的商品进货存货的场景中,其实当表单数据删除时,是需要把存货量扣除的,此时可以在「表单删除」上,配置 UPDATE 函数,用于扣除数据,从而保证数据是一致的。
- UPSERT 函数一次最多只能 更新 100 条主表单数据 ,超出会报错导致提交失败。 免费版 一次最多只能插入 某条表单数据下 50 个明细数据, 轻享版、专业版 一次 可更新插入 500 条明细数据 ( 默认是50条,需要在表单编辑页面设置最大条数为500条 ) ,超出也会报错提示「提交失败」。
- UPSERT 函数一次只能操作表单下一个明细组件的数据。如果有操作多个明细组件数据的需求,请配置多个UPSERT 函数。
- 主条件和子条件是由逻辑函数构造的。除了 AND 和 OR 之外,其他逻辑函数第一个参数必须是目标表中的组件,两个参数的位置不能调换。
- 配置 UPSERT 函数将明细数据插入(更新)到另一张表,当明细下有两条数据都命中相同的条件时,会是另一张表插入两条数据,而不会是第一条明细数据插入,第二条明细数据更新。
- 高级公式组件支持范围如下