Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melaksanakan Operasi UPSERT dengan Berbilang Lajur dalam SQL dengan Cekap?

Bagaimanakah Saya Boleh Melaksanakan Operasi UPSERT dengan Berbilang Lajur dalam SQL dengan Cekap?

Susan Sarandon
Lepaskan: 2024-12-10 20:29:14
asal
375 orang telah melayarinya

How Can I Efficiently Perform UPSERT Operations with Multiple Columns in SQL?

Melaksanakan UPSERT dengan Berbilang Lajur Menggunakan INSERT...PADA KEMASKINI KUNCI PENDUA

Untuk melakukan operasi UPSERT (masukkan baris baharu atau kemas kini sedia ada baris) sambil menampung kedua-dua nilai baharu dan sedia ada dalam bahagian kemas kini, INSERT...ON DUPLICATE Kenyataan KEY UPDATE biasanya digunakan. Teknik ini membolehkan anda mengendalikan senario berbeza berdasarkan sama ada rekod dengan kunci utama yang ditentukan wujud atau tidak.

Contoh Mudah

Pertimbangkan jadual bernama Item dengan lajur Item_Name (kunci utama) dan Items_In_Stock yang mengandungi kiraan inventori. Apabila menerima item, logik berikut digunakan:

  • Jika item tidak wujud, masukkan rekod baharu dengan kuantiti yang disediakan.
  • Jika item wujud, kemas kini lajur Items_In_Stock dengan menambah kuantiti baharu kepada nilai sedia ada.

Pendekatan naif akan melibatkan penggunaan berbilang SELECT kenyataan dalam bahagian KEMASKINI untuk mendapatkan semula kiraan sedia ada, seperti dalam contoh berikut:

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES('A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A')
Salin selepas log masuk

Penyelesaian yang Diperbaiki

Walau bagaimanapun, pendekatan ini boleh menjadi rumit yang tidak semestinya. PostgreSQL membolehkan anda merujuk nilai baris yang mencetuskan keadaan ON DUPLICATE KEY secara langsung dalam klausa UPDATE. Oleh itu, anda boleh memudahkan penyataan seperti berikut:

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27
Salin selepas log masuk

Pernyataan yang dioptimumkan ini mengelakkan overhed pertanyaan SELECT tambahan dan memastikan kod lebih ringkas dan elegan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Operasi UPSERT dengan Berbilang Lajur dalam SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan