Friday, July 14, 2006

Update atau insert di ORACLE

Kasus sinkronisasi data pada database sering kali kita hadapi. Kita perlu memasukan data baru atau mengubah/memperbarui data yang sudah ada.

Dalam kasus ini jika kita menggunakan ORACLE, kita dapat menggunakan perintah SQL 'MERGE'. Dengan perintah MERGE kita tidak perlu mengecek data yang ada apakah akan di-insert atau di-update karena data sudah ada.

Dibawah ini contoh query untuk update atau insert ke database yang diimplementasikan pada class PreparedStatement:


MERGE INTO app_user dest
USING (SELECT ? AS userid, ? AS first_name FROM dual) src
ON (dest.userid = src.userid)
WHEN MATCHED THEN
UPDATE SET dest.first_name = src.first_name
WHEN NOT MATCHED THEN
INSERT (dest.userid, dest.first_name)
VALUES (src.userid, src.first_name)


Pada query diatas akan dilihat apakah dalam tabel app_user sudah ada userid yang dimasukan dalam variabel pertama (tanda tanya pertama), jika ada maka field first_name akan di-update dengan variabel kedua (tanda tanya kedua) tapi jika tidak ada maka varibel pertama dan varibel kedua akan di-insert pada tabel.

No comments:

Followers