Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memperbarui nilai dalam satu atau beberapa kolom tabel ketika suatu kondisi terpenuhi.
catatan
Ukuran maksimum untuk satu pernyataan SQL adalah 16 MB.
Sintaksis
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE table_name [ [ AS ] alias ] SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]
Parameter
- DENGAN klausa
-
Klausa opsional yang menentukan satu atau lebih. common-table-expressions Lihat DENGAN klausa.
- table_name
-
Meja sementara atau persisten. Hanya pemilik tabel atau pengguna dengan hak istimewa UPDATE pada tabel yang dapat memperbarui baris. Jika Anda menggunakan klausa FROM atau memilih dari tabel dalam ekspresi atau kondisi, Anda harus memiliki hak pilih pada tabel tersebut. Anda tidak dapat memberikan tabel alias di sini; Namun, Anda dapat menentukan alias dalam klausa FROM.
catatan
Tabel eksternal Amazon Redshift Spectrum hanya bisa dibaca. Anda tidak dapat MEMPERBARUI tabel eksternal.
- alias
-
Nama alternatif sementara untuk tabel target. Alias bersifat opsional. Kata kunci AS selalu opsional.
- SET kolom =
-
Satu atau beberapa kolom yang ingin Anda modifikasi. Kolom yang tidak terdaftar mempertahankan nilainya saat ini. Jangan sertakan nama tabel dalam spesifikasi kolom target. Misalnya,
UPDATE tab SET tab.col = 1
tidak valid. - ekspresi
-
Ekspresi yang mendefinisikan nilai baru untuk kolom tertentu.
- DEFAULT
-
Memperbarui kolom dengan nilai default yang ditetapkan ke kolom dalam pernyataan CREATE TABLE.
- DARI tablelist
-
Anda dapat memperbarui tabel dengan mereferensikan informasi di tabel lain. Cantumkan tabel lain ini dalam klausa FROM atau gunakan subquery sebagai bagian dari kondisi WHERE. Tabel yang tercantum dalam klausa FROM dapat memiliki alias. Jika Anda perlu menyertakan tabel target dari pernyataan UPDATE dalam daftar, gunakan alias.
- Kondisi DIMANA
-
Klausa opsional yang membatasi pembaruan ke baris yang cocok dengan kondisi. Ketika kondisi kembali
true
, kolom SET yang ditentukan diperbarui. Kondisi ini dapat berupa predikat sederhana pada kolom atau kondisi berdasarkan hasil subquery.Anda dapat memberi nama tabel apa pun di subquery, termasuk tabel target untuk UPDATE.
Catatan penggunaan
Setelah memperbarui sejumlah besar baris dalam tabel:
-
Vakum meja untuk merebut kembali ruang penyimpanan dan mengurutkan ulang baris.
-
Analisis tabel untuk memperbarui statistik untuk perencana kueri.
Gabungan luar kiri, kanan, dan penuh tidak didukung dalam klausa FROM dari pernyataan UPDATE; mereka mengembalikan kesalahan berikut:
ERROR: Target table must be part of an equijoin predicate
Jika Anda perlu menentukan gabungan luar, gunakan subquery di klausa WHERE dari pernyataan UPDATE.
Jika pernyataan UPDATE Anda memerlukan self-join ke tabel target, Anda perlu menentukan kondisi gabungan, serta kriteria klausa WHERE yang memenuhi syarat baris untuk operasi pembaruan. Secara umum, ketika tabel target bergabung dengan dirinya sendiri atau tabel lain, praktik terbaik adalah menggunakan subquery yang secara jelas memisahkan kondisi gabungan dari kriteria yang memenuhi syarat baris untuk pembaruan.
Perbarui kueri dengan beberapa kecocokan per baris menimbulkan kesalahan saat parameter konfigurasi error_on_nondeterministic_update
disetel ke true. Untuk informasi selengkapnya, lihat error_on_nondeterministic_update.
Anda dapat memperbarui kolom GENERATED BY DEFAULT AS IDENTITY. Kolom didefinisikan sebagai GENERATED BY DEFAULT AS IDENTITY dapat diperbarui dengan nilai yang Anda berikan. Untuk informasi selengkapnya, lihat GENERATED BY DEFAULT AS IDENTITY.