INSERT - 插入
INSERT 公式主要用于把当前录入表的数据插入到目标表中,比如在车辆管理中,需要将车辆信息插入到车辆管理系统中,当前录入表的数据既可以来自于普通组件,也可以来自于子表单组件。如果是子表单组件,则会把明细数据分成多条插入到目标表中,但是最多只能使用一个子表单组件。
格式
INSERT()
函数的格式为:
INSERT(目标表,目标列1,目标值1,目标列2,目标值2....)
- 目标表:要插入数据的表单
- 目标列:目标表中某个组件,INSERT只支持往目标表中的普通组件插入数据,不支持往目标表中的子表单中插入数据。
- 目标值:
- 目标列的值,这个值可以是当前录入表的某个组件的值,也可以是通过公式计算得到的某一个值;可以是一个子表单里的值,也可以是一个子表单组件计算出来的值;
- 假如目标值中涉及到当前录入表的子表单下的组件,则最多只能涉及一个明细。
使用案例
以下内容将通过两个使用案例,来协助你更好的理解和使用INSERT()
函数。
案例一:目标值来自于普通组件
场景
- 商品表: 商品名,存货量,商品类别,商品类别描述
- 商品类别表:商品类别,商品类别描述
需求
当在「商品表」中添加一条数据时,要把「商品表」中的商品类别和类别描述插入一条数据到「商品类别」表中。
案例二:目标值来自于一个子表单组件
假设目标值中包含子表单组件。那么子表单下有几条数据,就会拆开往目标表中插入几条数据。
场景
- 当前录入表是「进货表」,有「进货单号」,「进货日期」,「子表单」(子表单下有商品名,进货量)。
- 插入数据的目标表是「存货表」,有「进货单号」,「进货日期」,「商品名」,「进货量」四个组件。
需求
在进货表中提交数据进货,子表单下有 N 条数据,那么数据提交后,「存货表」要插入 N 条数据。
- 在「进货表」的「业务关联规则」中,配置 INSERT 函数如下:
- 目标表选「存货表」,目标列选「存货表.商品名」,目标值为来自于「当前提交数据表」下的「子表单」下的商品名。
- 进货表的子表单下有几个商品,最后「存货表」中就会插入几条数据。对于子表单外的进货单号,进货日期,插入的每条数据都是相同的。
注意事项
- INSERT和UPSERT使用场景的差异
INSERT 公式是不管目标表中是否有同样的数据存在,都可以插入。但有时我们希望如果数据存在,则只做更新;目标数据不存在再插入,对于这种功能,可以用高级公式-UPSERT 实现。
- 高级公式支持的组件范围如下
- 能作为判断条件的组件: 「单行文本」、「多行文本」、「单选」、「下拉单选」、「日期」
- 能进行赋值的组件: 「单行文本」、「多行文本」、「数值」、「单选」、「下拉单选」、「复选」、「下拉复选」、「级联选择」、「日期」、「日期区间」、「图片上传」、「附件」、「成员」、「地址」、「关联表单」。
- INSERT可以插入数据条数限制
- 通过批量导入触发业务关联规则插入目标表为主表,字段无条数限制(建议导入不超过 1000 条数据,超过数据导入会较慢),批量导入有文件大小限制(20MB)。
- 子表单插入主表,免费版是50条,轻享版、专业版最大支持500条明细插入(需提前在表单设置页面将子表单最大条数设置成 500 条)
- 暂不支持目标值来自于多个子表单组件的场景。
例如:假如目标值来自于多个子表单,子表单 A 有 M 条数据,子表单 B 有 N 条数据,那最后拆开往目标表中插入多少条数据呢?是 M*N 条吗?如果是这样,那么数据就会重复,出现统计错误
本文档对您是否有帮助?