全部产品
Search
文档中心

PolarDB:UPDATE

更新时间:Jul 02, 2025

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

ParameterDeskripsi
optimizer_hintPetunjuk tersemat komentar untuk pengoptimal, yang digunakan untuk memilih rencana eksekusi.
tabelNama tabel yang akan diperbarui. Nama tersebut dapat disertifikasi skema.
dblinkNama tautan database, yang mengidentifikasi database jarak jauh. Untuk informasi lebih lanjut tentang tautan database, lihat perintah CREATE DATABASE LINK.
kolomNama kolom dalam tabel.
ekspresiEkspresi untuk ditetapkan ke kolom. Ekspresi tersebut dapat menggunakan nilai lama dari kolom ini dan kolom lainnya dalam tabel.
DEFAULTEkspresi default dari kolom. Jika tidak ada ekspresi default tertentu yang ditetapkan, nilai defaultnya adalah null.
kondisiEkspresi yang mengembalikan nilai bertipe BOOLEAN. Hanya baris yang mengembalikan nilai true dari ekspresi ini yang diperbarui.
ekspresi_pengembalianEkspresi 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:
  • Jika kolom yang ditentukan dalam ekspresi_pengembalian diberi nilai dalam perintah UPDATE, nilai yang diberikan digunakan dalam evaluasi ekspresi_pengembalian.
  • Jika kolom yang ditentukan dalam ekspresi_pengembalian tidak diberi nilai dalam perintah UPDATE, nilai saat ini dari kolom dalam baris yang terpengaruh digunakan dalam evaluasi ekspresi_pengembalian.
rekamanRekaman 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.
variabelVariabel 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.
koleksiKoleksi 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.
subqueryKlausa 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;