Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan UPSERTS secara Cekap dengan Kemas Kini Bertambah pada Kemasukan Pangkalan Data Sedia Ada?
Cara Melaksanakan UPSERTS dengan Data Sedia Ada dan Baharu dalam Klausa Kemas Kini
Dalam bidang pengurusan pangkalan data, UPSERTS memainkan peranan penting dalam mengemas kini jadual dengan menyelaraskan operasi sisipan dan kemas kini. Senario biasa melibatkan penambahan nilai sedia ada dalam jadual berdasarkan nilai masuk baharu. Sebagai contoh, jika kami mengekalkan jadual inventori di mana item diterima dan stoknya dijejaki, kami memerlukan mekanisme untuk mengendalikan kedua-dua sisipan item baharu dan mengemas kini stok item sedia ada.
Secara tradisinya, seseorang mendekati masalah ini menggunakan subqueries dalam klausa kemas kini pernyataan UPSERT. Teknik ini membolehkan mendapatkan semula nilai sedia ada daripada baris yang sedang dikemas kini. Walau bagaimanapun, dengan kemungkinan berbilang lajur dalam jadual, menulis berbilang penyata pilihan boleh menjadi menyusahkan.
Untuk menangani perkara ini, wujud pendekatan yang lebih mudah yang menghapuskan keperluan untuk subkueri. Dengan merujuk pada baris yang mencetuskan kemas kini melalui ON DUPLICATE KEY, anda boleh terus mengakses dan memanipulasi nilainya dalam klausa kemas kini.
Pertimbangkan pernyataan UPSERT berikut:
INSERT INTO `item` (`item_name`, items_in_stock) VALUES( 'A', 27) ON DUPLICATE KEY UPDATE `new_items_count` = `new_items_count` + 27
Dalam contoh ini , lajur new_items_count dikemas kini dengan menambah nilai sedia ada dengan nilai baharu 27.
Pendekatan ringkas ini bukan sahaja meningkatkan kebolehbacaan kod tetapi juga meningkatkan kecekapan dengan menghapuskan subkueri yang tidak perlu. Ingat, kunci kepada pengaturcaraan pangkalan data selalunya dalam mencari kesederhanaan dan kecekapan, dan penyelesaian elegan ini menunjukkan kedua-duanya.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan UPSERTS secara Cekap dengan Kemas Kini Bertambah pada Kemasukan Pangkalan Data Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!