Upsert adalah singkatan dari “insert or update” (masukkan atau perbarui). Ini adalah sebuah metode dalam basis data yang digunakan untuk memasukkan data baru ke dalam tabel atau memperbarui data yang sudah ada berdasarkan kunci unik atau kolom lain yang ditentukan.
Ketika Anda menggunakan metode ini, sistem basis data akan mencoba untuk memasukkan data ke dalam tabel. Jika data tersebut sudah ada dalam tabel, maka data tersebut akan diperbarui dengan nilai-nilai baru yang diberikan. Jika data tersebut belum ada dalam tabel, maka akan ditambahkan sebagai baris baru.
Metode ini berguna untuk memastikan data tertentu ada dalam tabel, tetapi Anda tidak yakin apakah data tersebut sudah ada atau belum. Dengan menggunakan metode ini, Anda dapat menghindari langkah-langkah tambahan seperti memeriksa keberadaan data sebelum memutuskan apakah akan memperbarui atau memasukkan data baru.
Metode ini dapat diimplementasikan dengan berbagai cara, tergantung pada sistem basis data yang digunakan. Beberapa sistem basis data menyediakan pernyataan SQL khusus seperti “MERGE” atau “UPSERT” yang memungkinkan Anda untuk melakukan operasi upsert dengan cara yang lebih sederhana. Di lain waktu, Anda mungkin perlu menulis logika kustom dalam kode aplikasi Anda untuk mencapai efek yang sama.
Penting untuk diingat bahwa setiap sistem basis data dapat memiliki implementasi yang sedikit berbeda untuk metode ini, jadi penting untuk mengacu pada dokumentasi spesifik sistem basis data yang Anda gunakan untuk memahami cara terbaik untuk melakukannya.
Penggunaan Metode Upsert
Dalam beberapa sistem manajemen basis data (DBMS), seperti PostgreSQL, terdapat perintah UPSERT yang secara langsung mendukung operasi ini. Contoh sintaksis UPSERT dalam PostgreSQL adalah sebagai berikut:
INSERT INTO nama_tabel (kolom1, kolom2, ...) VALUES (nilai1, nilai2, ...) ON CONFLICT (kolom_kunci) DO UPDATE SET kolom1 = nilai1_baru, kolom2 = nilai2_baru, ...
Dalam contoh di atas, jika ada konflik pada kolom kunci, yaitu jika baris dengan nilai kolom kunci yang sama sudah ada dalam tabel, maka baris tersebut akan diperbarui dengan nilai-nilai yang baru. Jika tidak ada konflik, maka baris baru akan dimasukkan ke dalam tabel.
Di beberapa DBMS lain, seperti MySQL, tidak ada perintah UPSERT yang khusus. Namun, Anda masih dapat mencapai efek UPSERT dengan menggunakan beberapa perintah SQL yang digabungkan. Misalnya, Anda dapat menggunakan perintah INSERT IGNORE untuk menghindari kesalahan duplikasi dan perintah UPDATE untuk memperbarui baris jika diperlukan.
Kesimpulan
UPSERT dalam SQL adalah operasi untuk memasukkan baris ke dalam tabel jika baris tersebut belum ada atau memperbarui baris jika sudah ada. Ini adalah kombinasi dari operasi INSERT dan UPDATE.
Beberapa DBMS memiliki perintah UPSERT yang khusus untuk operasi ini, sementara yang lain memerlukan penggabungan perintah INSERT dan UPDATE.
Penting untuk merujuk ke dokumentasi resmi DBMS yang Anda gunakan untuk memahami sintaksis yang tepat dan cara kerja UPSERT dalam sistem yang Anda gunakan.