数据库防止插入重复
引言
今天敲代码时,突然想到自己以前在做数据库插入数据时,为了防止重复,都会把将要插入的数据再通过数据库查询一遍,以前就觉得十分的麻烦,但是那时候没时间搞一下,后来就忘了,正好今天想起来了,并且在群里问了一些大佬,问了他们的实现方法,现在做个总结。
-------------------------------------------------尴尬的分割线---------------------------------------------
方法一:
设置唯一索引,如果插入重复的数据,会报DuplicateKeyException,捕获这个异常,返回msg-“插入数据重复”。
这也是我今天想到的方法。
方法二:
使用发号器,虽然能很大程度上保证几乎不会重复,但是生成出来的id,是一个带有趋势的id,如递增或递减或摆动(也可以说是有意图的趋势),如果对于一些手动数据的id,很随意的id,或数字和字母组合,可能就不是那么合适了,不过这也算一种方法,只不过要看情况使用。
我也是第一次听说发号器,所以读者和我一样不了解发号器的可以自行百度一下,网上的资料很多。
方法三:
布隆过滤器,这倒是一个从来没听说过的东西(听群里大佬说在做爬虫的时候会用到这个,看来如果有机会要学一学爬虫了),用的是散列有关的思想,但是如果数据库中的数据过于庞大,这种方法的效率还是会下降的,并且这种方法有误错率,数据量越大,误错率越大,由此看来,并不是我想要的那种效果。
感兴趣的读者可以自行百度一下。