全部产品
Search
文档中心

Lindorm:UPDATE

更新时间:Jul 06, 2025

Anda dapat menggunakan sintaks UPDATE untuk memperbarui data di LindormTable. Topik ini menjelaskan sintaks UPDATE dan tindakan pencegahan penggunaannya.

Mesin dan versi yang berlaku

Sintaks

update_statement ::= UPDATE [hint_clause] table_identifier
                     SET column_identifier = value (',' column_identifier = value ) *
                     WHERE where_clause
where_clause     ::=  relation ( AND|OR relation )*
relation         ::=  column_name operator term
                      | '(' column_name ( ',' column_name )* ')' operator tuple_literal
operator         ::=  '=' | '<' | '>' | '<=' | '>=' | '!=' | IN | IS NOT? NULL | LIKE

Batasan

  • Anda tidak dapat menggunakan sintaks UPDATE untuk memperbarui kunci utama.

  • Atomicitas baris tunggal tidak dijamin. Jika terjadi kesalahan saat Anda melakukan operasi penambahan, seperti menambah nilai suatu field, dan diperlukan percobaan ulang, hasilnya mungkin tidak akurat karena perhitungan berulang.

  • Transaksi lintas baris tidak didukung. Jika terjadi kesalahan saat Anda mengeksekusi pernyataan UPDATE untuk memodifikasi beberapa baris data, data di beberapa baris mungkin diperbarui sementara data di baris lainnya mungkin gagal diperbarui.

    Catatan
    • Saat menggunakan ekspresi untuk memperbarui data di kolom non-kunci utama, kami sarankan Anda memperbarui satu baris data dan menentukan semua kunci utama untuk dengan cepat menemukan baris yang ingin diperbarui. Sebagai contoh, nilai di kolom tertentu bertambah dalam topik ini.

    • Saat melakukan pembaruan skalar (misalnya, klausa pembaruan adalah c1=1) dan data di beberapa baris gagal diperbarui, lakukan operasi pembaruan lagi.

Contoh

Kode sampel berikut memberikan contoh tentang cara membuat tabel dan menyisipkan satu baris data:

-- Buat tabel bernama sensor.
CREATE TABLE sensor (
  p1 INTEGER NOT NULL, 
  c1 INTEGER, 
  c2 VARCHAR, 
  c3 VARCHAR,
  PRIMARY KEY(p1)
);

-- Sisipkan satu baris data.
UPSERT INTO sensor(p1, c1, c2, c3) VALUES(1,1,'a','a');

Hasil sampel:

+----+----+----+----+
| p1 | c1 | c2 | c3 |
+----+----+----+----+
| 1  | 1  | a  | a  |
+----+----+----+----+

Perbarui data berdasarkan kunci utama

UPDATE sensor SET c2='b' WHERE p1=1;

Verifikasi Hasil

Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah diperbarui. Hasil sampel:

+----+----+----+----+
| p1 | c1 | c2 | c3 |
+----+----+----+----+
| 1  | 1  | b  | a  |
+----+----+----+----+

Perbarui data berdasarkan non-kunci utama

Penting
  • Versi LindormTable harus 2.7.6 atau lebih baru. Anda dapat melihat versi saat ini dan memperbarui versi LindormTable ke 2.7.6 atau lebih baru di konsol.

  • Fitur ini sedang dalam pratinjau publik. Jika Anda ingin menggunakan fitur ini, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).

UPDATE sensor SET c3='b' WHERE c1=1;

Verifikasi Hasil

Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah diperbarui. Hasil sampel:

+----+----+----+----+
| p1 | c1 | c2 | c3 |
+----+----+----+----+
| 1  | 1  | b  | b  |
+----+----+----+----+

Tambahkan nilai di kolom tertentu

Penting
  • Versi LindormTable harus 2.7.6 atau lebih baru. Anda dapat melihat versi saat ini dan memperbarui versi LindormTable ke 2.7.6 atau lebih baru di konsol.

  • Fitur ini sedang dalam pratinjau publik. Jika Anda ingin menggunakan fitur ini, hubungi dukungan teknis Lindorm (ID DingTalk: s0s3eg3).

UPDATE sensor SET c1 = c1 + 1 WHERE p1 = 1;

Verifikasi Hasil

Anda dapat mengeksekusi pernyataan SELECT * FROM sensor; untuk memeriksa apakah data telah diperbarui. Hasil sampel:

+------+------+------+------+
| p1   | c1   | c2   | c3   |
+------+------+------+------+
|    1 |    2 | b    | b    |
+------+------+------+------+

FAQ

  • Mengapa jumlah baris yang terpengaruh tidak sesuai harapan setelah data diperbarui?

    Data di tabel indeks pencarian dan tabel utama disinkronkan secara real-time. Jika Anda membuat indeks pencarian untuk tabel utama dan kondisi pembaruan mengenai kolom indeks, pembaruan mungkin gagal karena latensi sinkronisasi data. Akibatnya, jumlah baris yang terpengaruh tidak sesuai harapan. Anda dapat mengeksekusi kembali operasi pembaruan setelah sinkronisasi selesai. Untuk informasi tentang latensi pengindeksan pencarian, lihat bagian FAQ dari topik "Ikhtisar".

  • Apa penyebab kesalahan timeout saat Anda memperbarui beberapa baris data secara bersamaan?

    Kami menyarankan agar Anda tidak memperbarui lebih dari 10.000 baris data secara bersamaan. Jika diperlukan, tentukan parameter _l_operation_timeout_ dalam pernyataan UPDATE untuk mengontrol periode timeout, seperti contoh berikut: UPDATE /*+ _l_operation_timeout_(30000) */ table1 SET a=1 WHERE b=2;. Untuk detail lebih lanjut tentang parameter _l_operation_timeout_, lihat bagian Parameters of hintOptions pada topik "HINT". Jika masalah timeout masih berlanjut setelah menentukan parameter tersebut, Anda dapat menggunakan mesin komputasi Lindorm untuk memperbarui beberapa baris data secara bersamaan.