跳到主要内容

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 条吗?如果是这样,那么数据就会重复,出现统计错误

Copyright © 2024钉钉(中国)信息技术有限公司和/或其关联公司浙ICP备18037475号-4