Setelah melakukan back up dan commit, tidak jarang pula terjadi kesalahan sehingga data harus dikembalikan seperti semula. Ini artinya kita harus meng-update suatu tabel dari tabel lain.
Ada suatu table yang bernama tbl_siswa. tbl_siswa ini terdiri dari beberapa field, yaitu :
- id_siswa
- first_name
- middle_name
- last_name
- birthday
Dibawah ini adalah bentuk umum untuk mengembalikan data tbl_siswa sama seperti data yang ada pada tbl_siswa_20121219.
UPDATE [tabel_yang_diupdate] [nama_temporary_update]
SET [nama_temporary_update].field1 = (
SELECT [nama_temporary_sumber].field1 from [tabel_sumber] [nama_temporary_sumber]
WHERE [nama_temporary_sumber].id = [nama_temporary_update].id
)
WHERE [nama_temporary_update].id in (SELECT [tabel_sumber].id FROM [tabel_sumber])
Bila kita aplikasikan, hasilnya adalah sebagai berikut :
UPDATE
tbl_siswa ganti SET
ganti
.first_name = ( SELECT sumber.
first_name from
tbl_siswa_20131219 sumber WHERE
ganti
.id_siswa =
sumber
.
id_siswa
) WHERE
ganti
.
id_siswa
in (SELECT
sumber
.
id_siswa
FROMtbl_siswa_20131219)
Perintah di atas akan mengganti field first_name semua record di tbl_siswa (diberikan nama sementara dalam query tersebut menjadi ganti) dengan first_name yang ada di tabel sumber, yaitu yang id_siswanya sama (WHERE ganti.id_siswa = sumber.id_siswa).
Pastikan semua field di tabel update mempunyai query di tabel sumber. Jika tidak ada, maka secara otomatis Oracle akan memberikan nilai null. Oleh karena itu lakukan filter seperti di bawah ini untuk melakukan update hanya pada record yang juga terdapat di tabel sumber.
WHERE [nama_temporary_update].id in (
SELECT [tabel_sumber].id FROM [tabel_sumber])
No comments:
Post a Comment