> ## 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.

# UPSERT - Sisipkan atau Perbarui

> Pelajari cara menggunakan fungsi UPSERT() di YiDA untuk menyisipkan atau memperbarui data antar Formulir — lengkap dengan format, parameter, dan studi kasus praktis untuk otomatisasi antar Tabel.

Fungsi UPSERT() digunakan untuk menyisipkan atau memperbarui data ke dalam Formulir target. Saat menyisipkan data, jika data sudah ada di Formulir target, pembaruan akan dilakukan; jika data tidak ada di Formulir target, penyisipan akan dilakukan.

## Format

Format Fungsi `UPSERT()` adalah:

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
UPSERT (Target Table, Main Condition, Sub Condition, Target Column 1, Target Value 1, Target Column 2, Target Value 2......)
```

* Tabel target: Formulir target tempat data akan disisipkan/diperbarui.

* Kondisi utama: Kondisi utama digunakan untuk menentukan Rekam mana yang akan diperbarui. Kondisi utama disusun dari Fungsi logika:

* Sub Kondisi:

* Kolom target:

* Nilai target: Merujuk pada nilai yang akan diperbarui pada Kolom target. Nilai target dapat berupa nilai Komponen dari Formulir entri saat ini, nilai Komponen dari Formulir target yang akan diperbarui, nilai tetap, atau disusun dari Fungsi lain.

## Kasus 1: Memperbarui data Komponen reguler di Formulir target saat menyisipkan data Komponen reguler

* Formulir yang digunakan

* Kebutuhan

Ketika sebuah produk dimasukkan ke dalam Formulir Pembelian, jika data dengan Nama produk yang sama sudah ada di Formulir Inventaris, tambahkan kuantitas pembelian ke kuantitas stok produk tersebut yang sudah ada. Jika Nama produk tidak ditemukan di Formulir Inventaris, sisipkan Nama produk ke dalam Formulir Inventaris dengan kuantitas stok sama dengan kuantitas pembelian.

* Detail Konfigurasikan Formula & analisis Formula

**Analisis Formula:**

* Tabel target: Tabel Inventaris.
* Kondisi utama: EQ(Tabel Inventaris.Nama Produk, Nama Produk). Rekam yang akan diperbarui adalah yang berada di Tabel Inventaris di mana Nama produknya sama dengan Nama produk yang dimasukkan di Formulir entri.
* Sub Kondisi: Karena yang diperbarui adalah Komponen reguler di "Tabel Inventaris": Nama produk dan kuantitas stok, yang tidak melibatkan rincian, Sub Kondisi diisi dengan ""
* Kolom target: Tabel Inventaris.Nama Produk.
* Nilai target: Nama Produk. Jika data tidak ditemukan, saat menyisipkan data, nilai Nama produk di Tabel Inventaris akan menjadi nilai Nama produk dari Tabel Pembelian.
* Kolom target: Tabel Inventaris.Kuantitas Stok
* Nilai target: Tabel Inventaris.Kuantitas Stok + Kuantitas Pembelian. Setelah mencocokkan produk inventaris berdasarkan kondisi, tambahkan kuantitas pembelian ini ke kuantitas stok awal.

## Kasus 2: Memperbarui data Komponen reguler di Formulir target saat menyisipkan data Komponen subformulir

* Formulir yang digunakan

* Kebutuhan

Tabel Pembelian memiliki rincian pembelian, dan beberapa produk dapat dimasukkan sekaligus. Untuk beberapa produk yang dimasukkan, jika produk yang bersangkutan tidak dapat ditemukan di Tabel Inventaris (ketika Nama produk dan kategori produk keduanya cocok, produk dianggap sama), sisipkan data. Jika produk yang bersangkutan dapat ditemukan, perbarui kuantitas stok produk yang bersangkutan (kuantitas stok = kuantitas stok awal + kuantitas pembelian).

* Detail Konfigurasikan Formula & analisis Formula

## Kasus 3: Memperbarui data Komponen subformulir di Formulir target saat menyisipkan data Komponen reguler

* Formulir yang digunakan

* Kebutuhan

Formulir "Tipe Risiko" menyimpan data tentang Tipe risiko dan Peristiwa risiko mana yang termasuk dalam setiap Tipe. Formulir "Peristiwa Risiko" mencatat rincian setiap Peristiwa risiko.

* Detail Konfigurasikan Formula & analisis Formula

**Analisis Konfigurasikan Formula:**

**Analisis Konfigurasikan Formula**

## Catatan

* Anda tidak dapat memperbarui Komponen reguler dan nilai di bawah rincian pada saat yang bersamaan. Jika Anda memiliki skenario seperti itu, harap pecah menjadi dua Fungsi UPSERT, satu digunakan untuk memperbarui Komponen reguler, dan yang lain digunakan untuk memperbarui data di bawah rincian.
* Dalam skenario pembelian dan inventaris produk yang dijelaskan di atas, ketika data Formulir dihapus, kuantitas stok perlu dikurangi sesuai. Dalam hal ini, Anda dapat Mengonfigurasi Fungsi UPDATE pada Peristiwa "Hapus Formulir" untuk mengurangi data, sehingga memastikan konsistensi data.
* Fungsi UPSERT dapat Memperbarui maksimum 100 Rekam data Formulir utama dalam satu kali; melebihi jumlah ini akan menyebabkan Kesalahan dan mengakibatkan pengiriman Gagal. Paket Edisi Gratis dapat menyisipkan maksimum 50 entri data rincian di bawah data Formulir tertentu dalam satu kali. Edisi Basic dan Edisi Professional dapat memperbarui dan menyisipkan 500 entri data rincian dalam satu kali (Default adalah 50 entri; Anda perlu Mengonfigurasi jumlah entri maksimum menjadi 500 di Halaman Edit Formulir). Melebihi jumlah ini juga akan menyebabkan Kesalahan dan menampilkan "Pengiriman Gagal".
* Fungsi UPSERT hanya dapat beroperasi pada data satu komponen rincian di bawah Formulir dalam satu kali. Jika Anda perlu beroperasi pada data beberapa komponen rincian, harap Konfigurasikan beberapa Fungsi UPSERT.
* Kondisi utama dan Sub Kondisi disusun dari Fungsi logika. Kecuali AND dan OR, parameter pertama dari Fungsi logika lain harus berupa Komponen di Tabel target, dan posisi kedua parameter tidak dapat ditukar.
* Saat Mengonfigurasi Fungsi UPSERT untuk menyisipkan (memperbarui) data rincian ke Tabel lain, jika dua Rekam di bawah rincian keduanya memenuhi Kondisi yang sama, dua Rekam akan disisipkan ke Tabel lain, bukannya Rekam rincian pertama disisipkan dan Rekam rincian kedua diperbarui.
* Cakupan dukungan komponen Formula Premium adalah sebagai berikut
