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 条)