Rumah >pangkalan data >tutorial mysql >Sisipan atau Kemas Kini MySQL: Bagaimana Mengendalikan Lajur Kunci Bukan Utama Unik dengan Cekap?

Sisipan atau Kemas Kini MySQL: Bagaimana Mengendalikan Lajur Kunci Bukan Utama Unik dengan Cekap?

DDD
DDDasal
2024-12-06 04:53:10661semak imbas

MySQL Insert or Update: How to Handle Unique Non-Primary Key Columns Efficiently?

MySql Insert atau Update Based on Unique Condition

Memasukkan data ke dalam jadual MySQL selalunya melibatkan pemeriksaan sama ada data sudah wujud sebelum melakukan kemas kini . Walau bagaimanapun, apabila berurusan dengan lajur kunci bukan utama yang unik, penyataan KEMASKINI tradisional menjadi pendek.

Dalam kes ini, pengguna mencari kaedah yang cekap untuk memasukkan data ke dalam jadual AgregatedData jika lajur datenum tidak wujud , atau kemas kini baris sedia ada jika ia berlaku.

Penyelesaian: INSERT ... PADA KUNCI DUA KEMASKINI

Seperti yang dicadangkan oleh Jai, penyelesaian yang paling sesuai ialah menggunakan INSERT ... PADA sintaks KEMASKINI KUNCI DUA:

INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)

Pernyataan ini melakukan sisipan jika tarikhnum tidak dijumpai. Jika ia wujud, ia mengemas kini lajur Cap Waktu dengan nilai yang disediakan dalam fungsi VALUES().

Penjelasan

Fungsi VALUES() memastikan bahawa nilai yang digunakan untuk kemas kini adalah sama seperti yang dinyatakan dalam pernyataan INSERT. Ini menghalang kemas kini nilai lajur yang tidak disengajakan.

Kelebihan INSERT ... ON DUPLICATE KEY UPDATE

  • Menyediakan satu pernyataan untuk memasukkan atau mengemas kini data, memudahkan kod.
  • Mengekalkan integriti data dengan menghalang pendua entri.
  • Menawarkan prestasi yang dioptimumkan dengan mengelakkan semakan berlebihan.

Atas ialah kandungan terperinci Sisipan atau Kemas Kini MySQL: Bagaimana Mengendalikan Lajur Kunci Bukan Utama Unik dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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