首页 新闻 会员 周边 捐助

违反了 约束,不能在对象中插入重复键 的问题

0
悬赏园豆:30 [已解决问题] 解决于 2017-08-15 16:40

      


2台电脑同时登记信息,出现这个,我的客户编号是自动生成的,怎样避免这个啊 
 
如果相隔个10几秒,登记可以避免
男人要爽的主页 男人要爽 | 初学一级 | 园豆:6
提问于:2017-05-25 10:23
< >
分享
最佳答案
0

增加一个自增列作为主键列

收获园豆:30
风行天下12 | 老鸟四级 |园豆:3867 | 2017-05-25 10:27
其他回答(5)
0

主键要自增。或者guid或者其他的唯一建生成算法。

你的客户编号要当成一个业务字段。不能当主键。

吴瑞祥 | 园豆:29449 (高人七级) | 2017-05-25 10:31
0

楼上说的都对,但是你始终还是要明白一点,并发冲突。

使用楼上的方法可以保存了,但是你的两个客户编号就相同了,这是你要想办法解决的事。

爱编程的大叔 | 园豆:30844 (高人七级) | 2017-05-25 10:37

你有什么办法解决吗,哥哥

支持(0) 反对(0) 男人要爽 | 园豆:6 (初学一级) | 2017-05-26 15:23
0

2L正解  我只是进来看看

筱浬 | 园豆:601 (小虾三级) | 2017-05-25 11:02
1

把自增id当做主键,客户编号要另设一个字段,而且客户编号不能当做主键,又要必须绝对唯一。你的错误提示就是因为你把客户编号当成了主键,而主键又是唯一的,但是你又没有让客户编号做到唯一。

龙行天涯 | 园豆:1794 (小虾三级) | 2017-05-25 14:03

怎么解决呢,哥哥

支持(0) 反对(0) 男人要爽 | 园豆:6 (初学一级) | 2017-05-26 15:23

我新增一个字段当主键吧,把客户编号不当主键,但是,如果我又多台电脑同时注册,怎样避免这个问题呢,添加是可以了,但是2个编号会重复吧,也就是楼上的楼上,爱编程的大哥说的并发吧!

支持(0) 反对(0) 男人要爽 | 园豆:6 (初学一级) | 2017-05-26 16:33

@男人要爽: 对,楼上说的并发,所导致的结果也就是会生成至少两个同样的客户编号,这种情况是你给的值不唯一造成的。最简单的办法就是使用guid来做客户编号的值。

string guidid=Guid.NewGuid().ToString();

你先这样用,如果重复,再说。

支持(0) 反对(0) 龙行天涯 | 园豆:1794 (小虾三级) | 2017-05-26 18:49
0

方法上面添加一个悲观锁吧

如下:

//@Lock(LockModeType.PESSIMISTIC_WRITE)

Mr_伍先生 | 园豆:6 (初学一级) | 2017-05-30 11:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册