Tugas memasukkan atau mengemas kini baris dalam pangkalan data berdasarkan dua keadaan boleh mencabar, terutamanya apabila mencari penyelesaian yang cekap. Masalah ini amat berleluasa apabila berurusan dengan jadual di mana baris baharu terus dijana dengan nama dan tarikh pendua.
Penyelesaian optimum untuk masalah ini ialah INSERT INTO ON DUPLICATE KEY UPDATE statement. Pernyataan ini membenarkan sisipan baris baharu jika ia belum wujud dan mengemas kini baris sedia ada jika ada. Untuk menggunakan pernyataan ini, jadual mesti mempunyai kunci unik (seperti kunci komposit) untuk mengesan konflik semasa operasi sisipan.
Pertimbangkan jadual dengan yang berikut skema:
CREATE TABLE myThing ( id INT AUTO_INCREMENT PRIMARY KEY, name INT NOT NULL, values1 INT NOT NULL, values2 INT NOT NULL, dates DATE NOT NULL, UNIQUE KEY (name, dates) -- This unique key is crucial. );
Dengan persediaan ini, penyataan berikut akan memasukkan baris baharu jika gabungan nama dan tarikh tidak wujud, atau mengemas kini baris sedia ada jika:
INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
Melaksanakan pernyataan sisipan berbilang kali dengan nama dan gabungan tarikh yang sama akan mengemas kini lajur nilai2, seperti yang dilihat di bawah:
| id | name | values1 | values2 | dates | | --- | --- | --- | --- | --- | | 1 | 777 | 1 | 4 | 2015-07-11 |
The INSERT INTO ON DUPLICATE KEY UPDATE statement menyediakan penyelesaian yang sangat cekap untuk menguruskan sisipan dan kemas kini berdasarkan pelbagai syarat. Dengan mentakrifkan kunci unik, pendekatan ini memastikan entri pendua dikendalikan dengan sewajarnya, menghapuskan keperluan untuk prosedur tersimpan yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh MASUKKAN KE DALAM atau KEMASKINI Baris Pangkalan Data Dengan Cekap Berdasarkan Dua Syarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!