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::=expressionPernyataan 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);