如何防止重复提交相同的数据?

wang_liran 发布于 2013/11/22 18:16
阅读 1K+
收藏 4

提交数据的形式是利用ajax提交JSON格式的数据传递给后台程序,现在情况就是,数据库不允许出现商品同名的情况,两台电脑同时提交一样的数据,都能插入成功(偶然会成功),因此在数据库中就出现了商品同名的情况。

问题就是如何从根本上防止重复提交相同的数据?

我的尝试:

1、设置token,并不能根治这种情况;

2、前台ajax检验同名情况,并不能防止同时提交相同数据的情况出现;

3、后台检验数据库是否出现同名商品,有一定效果,但依旧不能根治。


我的想法:

1、解决这种情况我有想过在数据库中设置一个unique索引,但是我想如果有更好的办法,尽量不把负担丢给数据库;

2、另外就是可以在写入商品数据的方法上加一个锁,只允许一个线程通过,保证不会出现这种情况;


我的疑惑:

我只能想到的是以上两种解决方法,请问哪种更常用更靠谱?或者有没有第三种方法?

加载中
0
huan
huan
唯一约束更好,用锁效率太低。
0
OSC首席键客
OSC首席键客
加个唯一索引不好吗?
0
lazeyliu
lazeyliu
加个唯一索引就叫压力,那你那个锁的方案更有压力
0
mark35
mark35

数据库字段加上唯一约束就行了。

数据库就是干这个的,你不想把负担交给数据库但事情总得完成,所以现在就只有由你这个傻瓜去想其他办法了

0
乌龟壳
乌龟壳

1、解决这种情况我有想过在数据库中设置一个unique索引,但是我想如果有更好的办法,尽量不把负担丢给数据库;

unique六个字母能省掉用几百行还不一定能完美实现的代码,何必折腾呢?过早优化是万恶之源。

wang_liran
wang_liran
有道理
0
钓兔子的胡萝卜
钓兔子的胡萝卜
比较笨的方法是,在添加数据之前,先删除名称是新添加的商品,这样就会保证了。
返回顶部
顶部