跳到主要内容

INSERT - 插入

1. 简介

1.1 INSERT 公式主要用于把当前录入表的数据插入到目标表中

比如在车辆管理中,需要将车辆信息插入到车辆管理系统中

当前录入表的数据既可以来自于普通组件,也可以来自于子表单组件。

如果是子表单组件,则会把明细数据分成多条插入到目标表中,但是最多只能使用一个子表单组件。

1.2 INSERT 格式

INSERT (目标表,目标列1,目标值1,目标列2,目标值2....)

目标表:要插入数据的表单

目标列:目标表中某个组件,INSERT 只支持往目标表中的普通组件插入数据,不支持往目标表中的子表单中插入数据。

目标值:

  • 目标列的值,这个值可以是当前录入表的某个组件的值,也可以是通过公式计算得到的某一个值;可以是一个子表单里的值,也可以是一个子表单组件计算出来的值;
  • 假如目标值中涉及到当前录入表的子表单下的组件,则最多只能涉及一个明细。


接下来介绍目标值来自于普通组件和子表单组件的配置情况

2. 目标值来自于普通组件(单行文本等)

场景

  • 商品表:  商品名,存货量,商品类别,商品类别描述
  • 商品类别表:商品类别,商品类别描述

需求
当在「商品表」中添加一条数据时,要把「商品表」中的商品类别和类别描述插入一条数据到「商品类别 表」中。(需求纯属虚构,合理性请忽略)

商品表的业务关联规则

3. 目标值来自于一个子表单组件

假设目标值中包含子表单组件。那么子表单下有几条数据,就会拆开往目标表中插入几条数据。

场景

当前录入表是「进货表」,有「进货单号」,「进货日期」,「子表单」(子表单下有商品名,进货量);
插入数据的目标表是「存货表」,有「进货单号」,「进货日期」,「商品名」,「进货量」四个组件。

需求

在进货表中提交数据进货,子表单下有 N 条数据,那么数据提交后,「存货表」要插入 N 条数据。

  • 在「进货表」的「业务关联规则」中,配置 INSERT 函数如下

目标表选「存货表」。
目标列选「存货表.商品名」,目标值为来自于「当前提交数据表」下的「子表单」下的商品名。
其他目标列配置相同。
进货表的子表单下有几个商品,最后「存货表」中就会插入几条数据。对于子表单外的进货单号,进货日期,插入的每条数据都是相同的。

进货表的业务关联规则

4. 目标值来自于多个子表单组件

假如目标值来自于多个子表单,子表单 A 有 M 条数据,子表单 B 有 N 条数据,那最后拆开往目标表中插入多少条数据呢?是 M*N 条吗?如果是这样,那么数据就会重复,出现统计错误,所以,对于目标值中有多个子表单的情况,我们不支持。

5. 注意事项

5.1 INSERT和UPSERT使用场景的差异

INSERT 公式是不管目标表中是否有同样的数据存在,都可以插入。但有时我们希望如果数据存在,则只做更新;目标数据不存在再插入,对于这种功能,可以用高级公式-UPSERT 实现。

5.2 高级公式支持的组件范围如下

  • 能作为判断条件的组件: 「单行文本」、「多行文本」、「单选」、「下拉单选」、「日期」
  • 能进行赋值的组件: 「单行文本」、「多行文本」、「数值」、「单选」、「下拉单选」、「复选」、「下拉复选」、「级联选择」、「日期」、「日期区间」、「图片上传」、「附件」、「成员」、「地址」、「关联表单」。

5.3 INSERT可以插入数据条数限制

  • 通过批量导入触发业务关联规则插入目标表为主表,字段无条数限制(建议导入不超过 1000 条数据,超过数据导入会较慢),批量导入有文件大小限制(20MB)。
  • 子表单插入主表,免费版是50条,轻享版、专业版最大支持500条明细插入(需提前在表单设置页面将子表单最大条数设置成 500 条)
Copyright © 2024钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4