全部产品
Search
文档中心

Lindorm:UPSERT

更新时间:Jul 06, 2025

Topik ini menjelaskan sintaks yang digunakan untuk memperbarui data dalam tabel spatio-temporal.

Sintaks

upsert_statement ::=  UPSERT [hint_clause] INTO table_name
                      '('columns| _l_ts_')' 
                      VALUES '(' values ')'
                      [ ON DUPLICATE KEY update_column = update_value |IGNORE ]?
columns ::=  column_name, columns
values  ::=  term, values,'(' values ')'
             | function_name '(' term ( ',' term )* ')'
update_column ::= column_name
update_value ::= term

hint_clause::=/*+hint_items*/
hint_items::=hint_item(','hint_item)*
hint_item::=identifier('('hint_option(','hint_option)*')')
hint_option::=expression
Catatan
  • Pernyataan UPSERT dapat menyisipkan beberapa baris sekaligus. Anda harus menentukan kolom tempat nilai akan dimasukkan. Gunakan kata kunci VALUES untuk menentukan jumlah baris yang ingin disisipkan.

  • Operasi UPSERT ON DUPLICATE KEY didukung dan mirip dengan operasi CHECK AND PUT. Pastikan nilai yang ditentukan dapat mengidentifikasi sebuah baris. Jika Anda menentukan kolom yang ingin diperbarui beserta nilai baru setelah ON DUPLICATE KEY, dan kolom tersebut ada di tabel, maka pengecualian akan terjadi karena ON DUPLICATE KEY tidak dapat memperbarui nilai dengan memeriksa apakah kolom yang ditentukan ada. Gunakan ON DUPLICATE KEY IGNORE untuk melewati pemeriksaan kolom duplikat dan langsung menyisipkan baris.

  • Anda dapat menggunakan Java Database Connectivity (JDBC) standar untuk mengirimkan pernyataan SQL reguler atau pernyataan yang telah dipersiapkan ke Lindorm. Untuk melakukan operasi penyisipan batch standar, gunakan JDBC pada Lindorm versi 2.2.16 atau yang lebih baru.

Contoh

  • Anda dapat menggunakan salah satu dari dua metode berikut untuk menulis data ke dalam tabel spatio-temporal:

    • Metode 1

      UPSERT INTO dt(id, g, t) VALUES(0,ST_MakePoint(0.0,1.0),1000);
    • Metode 2

      UPSERT INTO dt(id, g, t) VALUES(0,ST_GeomFromText('POINT (0.0 1.0)'),1000);
  • Anda dapat menjalankan pernyataan berikut untuk menulis beberapa data ke dalam tabel spatio-temporal sekaligus:

    UPSERT INTO dt (id, g, t) VALUES(1,ST_MakePoint(1.23,2.34),2000),(2,ST_MakePoint(3.45,5.67),3000),(3,ST_MakePoint(4.56,5.67),4000);
Catatan
  • Untuk informasi lebih lanjut tentang fungsi spatio-temporal yang dapat digunakan untuk menulis data, lihat Ikhtisar.

  • Untuk contoh lainnya tentang cara menggunakan JDBC untuk menulis data, lihat Memulai.