PostgreSQL

PostgreSQL Upsert pada Konflik

PostgreSQL Upsert pada Konflik
Ekspresi 'Upsert' dikenali sebagai gabungan di RDBMS. 'Upsert' berguna untuk dimiliki dengan PostgreSQL jika Anda tidak ingin berurusan dengan kesalahan pelanggaran pembatasan unik karena entri berulang. Saat Anda menjalankan perintah UPDATE generik, penyesuaian yang diperlukan hanya akan terjadi jika catatan sesuai dengan standar perintah; jika tidak ada data seperti itu, maka tidak ada yang terjadi. Saat Anda menambahkan baris baru ke tabel, PostgreSQL akan memperbarui baris jika sudah ada sebelumnya, atau akan menggabungkan baris baru jika baris tidak ada. Kata kunci SQL 'Upsert' menggabungkan kata “update” dan “insert.Artikel ini menunjukkan cara kerja fitur 'Upsert' PostgreSQL, serta cara menggunakan fitur 'Upsert' untuk menambah atau memperbarui informasi jika baris yang disisipkan sudah ada di tabel.

Sintaksis

Berikut ini adalah sintaks dari kueri 'Upsert' ON CONFLICT.

>> INSERT INTO table_name(column_list) VALUSE (value_list) PADA tindakan target CONFLICT;

Luncurkan Shell Baris Perintah PostgreSQL

Untuk memulai, luncurkan shell baris perintah PostgreSQL dari menu Aplikasi. Hubungkan ke server yang diperlukan. Masukkan nama database yang ingin Anda kerjakan. Untuk bekerja di port lain, ketik nomor port dan nama pengguna yang ingin Anda gunakan. Untuk melanjutkan dengan parameter default, biarkan spasi apa adanya dan tekan 'Enter' di setiap opsi. Tambahkan kata sandi untuk nama pengguna yang dipilih, dan shell perintah Anda harus siap digunakan.

Contoh 1:

Sekarang, kita bisa memulai dengan 'Upsert' dalam konflik. Misalkan Anda memiliki tabel berjudul 'orang' dalam database yang dipilih dengan beberapa bidang yang menunjukkan catatan orang yang berbeda. Catatan-catatan ini menunjukkan nama-nama orang, usia mereka, dan kota serta negara mereka. Tabel ditampilkan di bawah ini.

>> PILIH * DARI orang;

Penting untuk mengetahui bagaimana kesalahan atau konflik dapat muncul. Bidang tabel 'id', yang juga merupakan kunci utama, berisi nilai dari 1 hingga 15. Ketika pengguna mencoba memasukkan beberapa catatan duplikat ke dalam tabel, konflik terjadi.

Mari kita coba pernyataan INSERT berikut, memasukkan catatan ke dalam tabel 'orang'. Kueri ini akan menyebabkan kesalahan karena nilai '3' dari bidang 'id' sudah ada di tabel.

>> INSERT INTO person (id, name, age, city, country) VALUES ( '3', 'Habib', '45', 'Chakwal', 'Pakistan');

Contoh 2: Upsert Dengan Klausul ON CONFLICT

Kami akan menggunakan klausa ON CONFLICT untuk menghindari kueri INSERT yang menyebabkan kesalahan ini karena memasukkan rekaman duplikat. Perintah ON CONFLICT muncul dengan dua frasa dengan penggunaan yang berbeda.

Contoh 3: Upsert Dengan Klausa DO NOTHING

Dalam contoh ini, kita akan melihat klausa DO NOTHING. Klausa ini menjelaskan bahwa tidak ada operasi yang akan dilakukan pada kesalahan atau konflik. Dengan kata lain, klausa ini hanya akan menghindari konflik atau kesalahan.

Jadi, mari kita coba perintah INSERT yang sama yang kita gunakan sebelumnya untuk menambahkan catatan duplikat ke tabel 'orang', dengan beberapa perubahan ditambahkan. Kami telah menambahkan klausa ON CONFLICT, bersama dengan pernyataan DO NOTHING dalam klausa ini. Klausa ON CONFLICT telah diterapkan ke kolom 'id' unik. Artinya, ketika pengguna mencoba memasukkan nilai duplikat ke kolom 'id', itu akan menghindari konflik dan tidak melakukan apa-apa. Seperti yang Anda lihat pada gambar di bawah, itu bahkan tidak akan memasukkan catatan baru ke dalam tabel, juga tidak akan memperbarui catatan sebelumnya.

>> INSERT INTO person (id, name, age, city, country) NILAI ( '3', 'Habib', '45', 'Chakwal', 'Pakistan') PADA KONFLIK (id) JANGAN APA-APA;

Mari kita periksa tabel 'orang' lagi demi keasliannya. Seperti yang Anda lihat pada gambar di bawah, tidak ada perubahan yang dilakukan pada tabel.

>> PILIH * DARI orang;

Contoh 2: Upsert Dengan Klausa DO

Selanjutnya, kita akan melihat klausa ON CONFLICT dan DO. Seperti namanya, klausa ___ akan melakukan tindakan atas kesalahan atau konflik ketika nilai duplikat dimasukkan ke dalam tabel. Kami akan menggunakan perintah insert yang sama yang kami gunakan sebelumnya untuk menyisipkan catatan duplikat di tabel 'orang', dengan sedikit perubahan. Kami telah menambahkan klausa ON CONFLICT dengan klausa DO di dalamnya. Ketika pengguna mencoba memasukkan nilai non-unik ke kolom 'id', itu akan melakukan tindakan untuk menghindari konflik. Kami telah menggunakan klausa UPDATE setelah klausa DO, yang menunjukkan pembaruan data di tabel 'orang'. Kata kunci SET digunakan untuk mengatur nilai kolom 'nama' ke nilai baru, 'Habib,' menggunakan kata kunci DIKECUALIKAN di mana 'id' adalah '3' pada saat ini. Jika Anda menjalankan kueri berikut, Anda akan melihat bahwa kueri telah dilakukan.

>> INSERT INTO person (id, name, age, city, country) NILAI ( '3', 'Habib', '45', 'Chakwal', 'Pakistan') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.nama;

Catatan tabel 'orang' harus diambil untuk melihat perubahan pada kueri di atas. Jika Anda menjalankan kueri berikut di shell baris perintah, Anda akan melihat output berikutnya.

>> PILIH * DARI orang;

Seperti yang Anda lihat dari output di bawah ini, nama orang tersebut telah diperbarui menjadi 'Habib,' di mana 'id' adalah '3.'

Anda juga dapat memperbarui catatan di lebih dari satu kolom menggunakan kata kunci DIKECUALIKAN dalam klausa ON CONFLICT dari kueri INSERT, seperti yang ditunjukkan di bawah ini.

>> INSERT INTO person (id, name, age, city, country) NILAI ( '3', 'Habib', '45', 'Chakwal', 'Pakistan') ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.nama, kota = DIKECUALIKAN.kota;

Perubahannya ditunjukkan di bawah ini.

>> PILIH * DARI orang;

Kesimpulan

Artikel ini menunjukkan cara menggunakan PostgreSQL 'Upsert' dengan klausa ON CONFLICT, bersama dengan tindakan DO dan DO NOTHING. Setelah membaca artikel ini, kami harap Anda lebih mudah memahami cara menggunakan PostgreSQL 'Upsert.'

Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...
Kontrol & kelola gerakan mouse di antara beberapa monitor di Windows 10
Manajer Mouse Tampilan Ganda memungkinkan Anda mengontrol & mengonfigurasi gerakan mouse di antara beberapa monitor, dengan memperlambat gerakannya di...
WinMouse memungkinkan Anda menyesuaikan & meningkatkan gerakan penunjuk tetikus di PC Windows
Jika Anda ingin meningkatkan fungsi default penunjuk tetikus Anda, gunakan freeware WinMouse. Ini menambahkan lebih banyak fitur untuk membantu Anda m...