Terdapat dua medan dalam jadual iaitu a dan b.
Sebagai contoh, rekod adalah seperti berikut:
1, 2
1, 3
2, 3
1, 3
Penjelasan:
1 Antaranya, 1 dan 3 adalah data berulang.
2. Data pendua dibenarkan wujud dalam jadual.
Masalah: Apabila pengguna memilih data pendua untuk tidak ditambahkan ke pangkalan data, data yang ditambahkan oleh pengguna adalah seperti berikut.
2, 3
1, 4
1, 3
Hanya 1 dan 4 boleh dimasukkan, tetapi bukan yang lain Bagaimana untuk mencapai keperluan ini? Maaf
Masalah ini lebih mudah untuk diselesaikan, gunakan penguncian optimistik, langkah-langkahnya adalah seperti berikut:
1 Cipta kunci cincang md5 (HashedKey) bagi (1, 3) tuple ke dalam redis, dan letakkan rekod yang sepadan dalam pertanyaan pertama ke dalam. redis;
2. Apabila memasukkan rekod, masukkan kunci cincang md5 daripada tuple baharu (1,3) ke dalam redis (mekanisme penguncian optimistik, ia membuktikan bahawa kunci itu sudah wujud dan operasi memasukkan). ditolak ;
3. Contoh algoritma hash adalah seperti berikut:
=== Selepas melihat dengan teliti soalan itu, nampaknya ia mesti diselesaikan menggunakan MySQL ===
Jika anda tidak menggunakan indeks, saya benar-benar tidak mempunyai idea yang bagus Namun, jika anda boleh membina indeks, anda boleh membuat a->b membentuk medan jadual indeks, dan jenis indeks ialah. indeks unik ini juga boleh menyelesaikan masalah sisipan berulang.
Tujuan menggunakan kekangan unik adalah untuk mengehadkan data pendua pada lapisan pangkalan data.
Jika anda ingin melepaskan sekatan ini, maka kami hanya boleh mengelakkannya melalui pengaturcaraan.
Penyelesaian yang paling langsung ialah sebelum memasukkan data, kami terlebih dahulu mencari data untuk menentukan sama ada medan yang perlu mempertimbangkan keunikan sudah wujud dengan nilai yang akan dikemas kini Jika wujud, tinggalkan kemas kini, jika tidak lakukan kemas kini operasi. TETAPI, Ini masih tidak dapat mengelakkan kemasukan data berulang Lagipun, masih terdapat situasi kemasukan data berulang yang tinggi
Disarankan apabila kekangan unik boleh digunakan, cuba ada jaminan kekangan yang unik Lagipun, ini adalah lapisan jaminan terakhir untuk sistem.