Anda di halaman 1dari 5

Fitur UPSERT

Basis Data Lanjut


Yan Sofyan A.S, S.Kom, M.Kom

Universitas Darma Persada


Jakarta
2022
A. Dasar Teori
Dalam database relasional, istilah upsert disebut sebagai merge atau penggabungan.
Idenya adalah ketika kita memasukkan baris baru ke dalam tabel, PostgreSQL akan
memperbarui baris jika sudah ada, jika tidak, itu akan menyisipkan baris baru. Itulah
sebabnya kita menyebut aksi tersebut upsert (kombinasi dari update atau insert).

Untuk menggunakan fitur upsert di PostgreSQL, kita menggunakan pernyataan


INSERT ON CONFLICT sebagai berikut:

PostgreSQL menambahkan klausa tindakan target ON CONFLICT ke pernyataan


INSERT untuk mendukung fitur upsert.

Dalam pernyataan ini, Target dapat berupa salah satu dari berikut ini:

 (column_name) – nama kolom.


 ON CONSTRAINT constraint_name – di mana nama constraint bisa menjadi
UNIQUE constraint.
 Predikat WHERE – klausa WHERE dengan predikat.

Action tersebut dapat berupa salah satu dari berikut ini:

 DO NOTHING – artinya tidak melakukan apa-apa jika baris sudah ada di tabel.
 DO UPDATE SET column_1 = value_1, .. WHERE condition – update
beberapa field dalam tabel.

Perhatikan bahwa klausa ON CONFLICT hanya tersedia dari PostgreSQL 9.5. Jika
kita menggunakan versi sebelumnya, kita memerlukan solusi lain untuk memiliki fitur
upsert.

Pada MySQL, kita akan menemukan bahwa fitur upsert mirip dengan insert on
duplicate key update statement di MySQL.

B. Latihan

1. Buatlah tabel baru yang disebut customers untuk mendemonstrasikan fitur upsert
PostgreSQL.

1
Tabel pelanggan terdiri dari empat kolom: customer_id, name, email, dan active.
Kolom nama memiliki batasan unik (unique constraint) untuk menjamin keunikan
nama customer.

2. Jalankan pernyataan INSERT berikut untuk menyisipkan beberapa baris ke dalam


tabel customers

3. Misalkan Microsoft mengubah email kontak dari contact@microsoft.com menjadi


hotline@microft.com, kita dapat memperbaruinya menggunakan pernyataan
UPDATE. Namun, untuk mendemonstrasikan fitur upsert, kita menggunakan
pernyataan INSERT ON CONFLICT berikut:

2
Pernyataan tersebut menetapkan bahwa jika nama customer ada di tabel
customers, abaikan saja (tidak melakukan apa-apa).

Pernyataan berikut ekuivalen dengan pernyataan di atas tetapi menggunakan


kolom nama alih-alih nama batasan unik (unique constraint) sebagai target
pernyataan INSERT.

4. Misalkan kita ingin menggabungkan email baru dengan email lama saat
memasukkan customer yang sudah ada, dalam hal ini, kita menggunakan klausa
UPDATE sebagai tindakan dari pernyataan INSERT sebagai berikut:

Keluarannya:

5. Untuk memverifikasi pernyataan upsert sebelumnya, kita periksa tabel


customers, terdiri dari 3 baris (seperti jumlah diawal, latihan no. 2). Pada latihan
no.3 dan 4, walaupun terdapat perintah INSERT, karena terjadi konflik, diabaikan
perintahnya (no. 3) dan dilakukan operasi UPDATE (no. 4).

3
C. TUGAS:
 Buatlah video latihan praktikum diatas, dan upload ke youtube dan kirim Link-
nya saja ke google classrom
 Tunjukkan dalam video tersebut setiap langkah yang dilakukan dan hasilnya.

Anda mungkin juga menyukai