php - mysql不使用索引如何做到不插入重复的数据?
PHP中文网
PHP中文网 2017-05-16 12:58:10
0
2
568

表中有两个字段,分别是a,b。

例如记录如下
1,2
1,3
2,3
1,3

说明:
1.其中1,3才是重复的数据。
2.表里面是允许重复数据存在。

问题:当用户选择重复的数据不添加入库,这时如果用户添加的数据如下。

2,3
1,4
1,3

只能让1,4插入,其余都不可以,怎么实现这个需求?麻烦了

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
伊谢尔伦

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:

function goHashed($a,$b,&$hashedKey)
{
   //注意对a,b数据格式的判断和异常考虑
   const SALT = "Hello,world"
   $hashedKey = md5($a.SALT.$b.SALT)
}

=== 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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!