一、简介
INSERT公式主要用于把当前录入表的数据插入到目标表中。当前录入表的数据既可以来自于普通组件,也可以来自于明细组件。如果是明细组件,则会把明细数据分成多条插入到目标表中。但是最多只能使用一个明细组件。
INSERT格式:INSERT(目标表,目标列1,目标值1,目标列2,目标值2….)
目标表:要插入数据的表单;
目标列:目标表中某个组件。INSERT只支持往目标表中的普通组件插入数据,不支持往目标表中的明细中插入数据。
目标值:目标列的值。这个值可以是当前录入表某个组件,也可以结合其他公式计算得出。假如目标值中涉及到当前录入表下的明细下的组件,则最多只能涉及一个明细。
接下来,分别介绍目标值来自于普通组件和明细组件的配置情况。
二、目标值来自于普通组件(单行文本等)
场景
“商品表” : 商品名,存货量,商品类别,商品类别描述
“商品类别表”:商品类别,商品类别描述。需求:
当在“商品表”中添加一条数据时,要把“商品表”中的商品类别和类别描述插入一条数据到“商品类别表”中。(需求纯属虚构,合理性请忽略)配置过程即效果请看下方视频
三、目标值来自于一个明细组件
假设目标值中包含明细组件。那么明细下有几条数据,就会拆开往目标表中插入几条数据。
场景:
当前录入表是“进货表”,有”进货单号”,”进货日期”,”进货明细”(明细下有商品名,进货量);
插入数据的目标表是“存货表”,有“进货单号”,“进货日期”,“商品名”,“进货量”四个组件。需求:在进货表中提交数据进货,明细下有N条数据,那么数据提交后,“存货表”要插入N条数据。
在”进货表”的“业务关联规则”中,配置INSERT函数如下。
目标表选“存货表”。
目标列选“存货表.商品名”,目标值为来自于”当前提交数据表”下的“进货明细”下的商品名。
其他目标列配置相同。
进货明细下有几个商品,最后“存货表”中就会插入几条数据。对于明细外的进货单号,进货日期,插入的每条数据都是相同的。
- 完整的配置过程和效果如下图
四、目标值来自于多个明细组件
假如目标值来自于多个明细,明细A有M条数据,明细B有N条数据。那最后拆开往目标表中插入多少条数据呢?是M*N条吗?如果是这样,那么数据就会重复,出现统计错误。
所以,对于目标值中有多个明细,我们直接不支持。
五、其他注意点
- INSERT公式是不管目标表中是否有同样的数据存在,都插入。但有时我们希望如果数据存在,则只做更新;目标数据不存在再插入,对于这种功能,可以用高级公式-UPSERT实现。