> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# INSERT - 挿入

> YiDAのINSERT数式を使ってエントリフォームのデータを対象テーブルへ挿入する方法を、構文・ユースケース・注意点とあわせて解説。標準コンポーネントとサブフォームからの挿入例や、UPSERT数式との違い・制限も紹介します。

INSERT数式は、主に現在のエントリフォームのデータを対象テーブルへ挿入するために使用します。例えば車両管理では、車両情報を車両管理システムに挿入できます。現在のエントリフォームのデータは、標準コンポーネントまたはサブフォームコンポーネントのいずれからでも取得できます。データソースがサブフォームコンポーネントの場合、明細行ごとに個別のレコードとして対象テーブルに挿入されます。同時に指定できるサブフォームコンポーネントは1つのみです。

## 構文

`INSERT()` 関数の構文は以下のとおりです。

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
INSERT(TargetTable, TargetColumn1, TargetValue1, TargetColumn2, TargetValue2, ...)
```

* 対象テーブル：データの挿入先となるフォーム。
* 対象列：対象テーブル内のコンポーネント。INSERTでは、対象テーブル内の標準コンポーネントへのデータ挿入のみに対応しています。対象テーブル内のサブフォームへのデータ挿入には対応していません。
* 対象値：

## ユースケース

以下の2つのユースケースを通じて、`INSERT()` 関数への理解と活用を深めていただけます。

### ケース1：対象値が標準コンポーネントから取得される場合

**シナリオ**

* 製品テーブル：製品名、在庫数、製品カテゴリ、製品カテゴリ説明
* 製品カテゴリテーブル：製品カテゴリ、製品カテゴリ説明

**要件**
製品テーブルに新しいレコードが追加されたとき、製品テーブルの製品カテゴリとカテゴリ説明を、新しいレコードとして製品カテゴリテーブルに挿入します。

### ケース2：対象値がサブフォームコンポーネントから取得される場合

対象値にサブフォームコンポーネントが含まれている場合、対象テーブルに挿入されるレコード数は、サブフォームの行数と同じになります。

**シナリオ**

* 現在のエントリフォームは仕入テーブルであり、仕入注文番号、仕入日、サブフォーム（製品名と仕入数量を含む）で構成されています。
* 挿入先の対象テーブルは在庫テーブルであり、仕入注文番号、仕入日、製品名、仕入数量の4つのコンポーネントで構成されています。

**要件**

仕入テーブルで仕入データを送信し、サブフォームにN行含まれている場合、送信後に在庫テーブルへN件のレコードを挿入する必要があります。

* 仕入テーブルのビジネス関連ルールで、INSERT関数を以下のように設定します。
* 対象テーブルに在庫テーブル、対象列に「在庫テーブル.製品名」、対象値に「現在送信中のデータフォーム」配下のサブフォームにある製品名を設定します。
* 在庫テーブルに挿入されるレコード数は、仕入テーブルのサブフォームに含まれる製品の数と同じになります。仕入注文番号や仕入日など、サブフォーム外の項目は、挿入されるすべてのレコードで同じ値になります。

## 注意事項

* INSERTとUPSERTのユースケースの違い

INSERT数式は、対象テーブルに同じレコードが既に存在するかどうかにかかわらず、データを挿入します。場合によっては、既存のレコードを更新し、対象レコードが存在しない場合にのみ挿入したいこともあります。このようなシナリオでは、プレミアム数式のUPSERTを使用してください。

* プレミアム数式では、以下のコンポーネントに対応しています。

* INSERTで挿入できるレコード数の制限。

* 対象値が複数のサブフォームコンポーネントから取得されるシナリオには、現時点で対応していません。

例えば、対象値が複数のサブフォームから取得され、サブフォームAにM行、サブフォームBにN行あるとき、対象テーブルに何件のレコードを挿入すべきでしょうか。M\*N件でしょうか。その場合、データが重複してしまい、集計結果に誤りが生じます。
