Memperbarui baris dalam tabel.
Sintaksis
UPDATE [ optimizer_hint ] table[subquery][@dblink ]
SET kolom = { ekspresi | DEFAULT } [, ...]
[ WHERE kondisi ]
[ RETURNING ekspresi_pengembalian [, ...]
{ INTO { rekaman | variabel [, ...] }
| BULK COLLECT INTO koleksi [, ...] } ]Deskripsi
Perintah UPDATE mengubah nilai kolom yang ditentukan di semua baris yang memenuhi kondisi. Hanya kolom yang akan dimodifikasi yang perlu disebutkan dalam klausa SET, sedangkan kolom lainnya tetap mempertahankan nilai sebelumnya.
Klausa RETURNING INTO { rekaman | variabel [, ...]} hanya dapat digunakan di dalam program SPL. Set hasil dari perintah UPDATE tidak boleh mengembalikan beberapa baris; jika tidak, pengecualian akan terjadi. Jika set hasil kosong, isi rekaman target atau variabel akan diatur menjadi null.
Klausa RETURNING BULK COLLECT INTO koleksi [, ...] hanya dapat digunakan jika perintah UPDATE berada di dalam program SPL. Jika Anda menentukan beberapa koleksi sebagai target untuk klausa BULK COLLECT INTO, setiap koleksi harus berisi bidang skalar. koleksi tidak boleh berupa rekaman. Set hasil dari perintah UPDATE dapat berisi nol, satu, atau lebih baris. ekspresi_pengembalian yang dievaluasi untuk setiap baris dari set hasil adalah elemen dalam koleksi, mulai dari elemen pertama. Baris yang ada dalam koleksi akan dihapus. Jika set hasil kosong, koleksi akan kosong.
Untuk memperbarui tabel, Anda harus memiliki hak istimewa UPDATE pada tabel dan hak istimewa SELECT untuk semua tabel yang nilainya dibaca dalam ekspresi atau kondisi.
Parameter
| Parameter | Deskripsi |
| optimizer_hint | Petunjuk tersemat komentar untuk pengoptimal, yang digunakan untuk memilih rencana eksekusi. |
| tabel | Nama tabel yang akan diperbarui. Nama tersebut dapat disertifikasi skema. |
| dblink | Nama tautan database, yang mengidentifikasi database jarak jauh. Untuk informasi lebih lanjut tentang tautan database, lihat perintah CREATE DATABASE LINK. |
| kolom | Nama kolom dalam tabel. |
| ekspresi | Ekspresi untuk ditetapkan ke kolom. Ekspresi tersebut dapat menggunakan nilai lama dari kolom ini dan kolom lainnya dalam tabel. |
| DEFAULT | Ekspresi default dari kolom. Jika tidak ada ekspresi default tertentu yang ditetapkan, nilai defaultnya adalah null. |
| kondisi | Ekspresi yang mengembalikan nilai bertipe BOOLEAN. Hanya baris yang mengembalikan nilai true dari ekspresi ini yang diperbarui. |
| ekspresi_pengembalian | Ekspresi yang mencakup satu atau lebih kolom dari tabel. Jika Anda menentukan nama kolom dari tabel dalam ekspresi_pengembalian, nilai yang digantikan untuk kolom ketika ekspresi_pengembalian dievaluasi ditentukan berdasarkan aturan berikut:
|
| rekaman | Rekaman yang berisi bidang-bidang kepada mana ekspresi_pengembalian yang dievaluasi ditetapkan. Sebagai contoh, ekspresi_pengembalian pertama ditetapkan ke bidang pertama dalam rekaman, dan ekspresi_pengembalian kedua ditetapkan ke bidang kedua dalam rekaman. Jumlah bidang dalam rekaman harus sesuai dengan jumlah ekspresi, dan bidang-bidang tersebut harus kompatibel tipe dengan ekspresi yang ditetapkan. |
| variabel | Variabel kepada mana Anda ingin menetapkan hasil evaluasi dari ekspresi_pengembalian. Jika lebih dari satu ekspresi_pengembalian dan variabel ditentukan, ekspresi_pengembalian pertama ditetapkan ke variabel pertama dan ekspresi_pengembalian kedua ditetapkan ke variabel kedua. Jumlah variabel yang ditentukan setelah kata kunci INTO harus sesuai dengan jumlah ekspresi yang mengikuti kata kunci RETURNING, dan variabel-variabel tersebut harus kompatibel tipe dengan ekspresi yang sesuai. |
| koleksi | Koleksi di mana elemen dibuat dari ekspresi_pengembalian yang dievaluasi. Anda dapat menentukan koleksi bidang tunggal atau koleksi tipe rekaman. Anda juga dapat menentukan beberapa koleksi di mana setiap koleksi terdiri dari bidang tunggal. Jumlah dan urutan ekspresi pengembalian harus sesuai dengan jumlah dan urutan bidang dalam semua koleksi yang ditentukan. Setiap ekspresi_pengembalian harus kompatibel tipe dengan bidang koleksi yang sesuai. |
| subquery | Klausa subquery. |
Contoh
Mengubah lokasi menjadi AUSTIN untuk departemen 20 dalam tabel dept:
UPDATE dept SET loc = 'AUSTIN' WHERE deptno = 20;Untuk semua karyawan dengan job = SALESMAN dalam tabel emp, tingkatkan gaji sebesar 10% dan komisi sebesar 500:
UPDATE emp SET sal = sal * 1.1, comm = comm + 500 WHERE job = 'SALESMAN';Ambil hasil dari SELECT * FROM table1 sebagai objek, dan tetapkan nilai dalam kolom class dari objek menjadi 1.
UPDATE (SELECT * FROM table1) SET class = 1 WHERE id = 1;