java 并发重复_插入重复 并发

场景:一般情况下,我们注册一个用户名,判断是否重复

select count(name) from employee

如果返回值大于0,说明已经存在了,不能用这个用户名注册,但是,并发情况下(load runner并发测试),同时注册十个,会插入多条相同用户名!

这时候,就要找到相应的解决方案了!经过测试,得出正确方法,给name字段添加唯一约束

具体写法:

alter table employees  add constraint CK_st unique(name)

测试通过,不会插入重复记录!

还有一种方法,考虑用事务,插入数据完成后,执行select count(name) from employee,如果>1,则回滚事务,提示注册失败!

由此,总结了一些约束的用法

主键(primary key)约束:

alter table employees  add constraint CK_PrimaryId primary key(EmployeeId)--主键会自动添加约束

核对(check)约束

alter table employees  add constraint CK_EmployeeType check(EmployeeType>1 and EmployeeType<5)--限制EmployeeType取值范围

默认(default)约束

alter table employees  add constraint CK_Pass default'111' for  Pass--密码默认为'111'

外键(foreign key)约束

alter table employees  add constraint CK_EmployeeId foreign key(employeeid)  references EmployeeRange(employeeid)

--保持表employees的employeeid字段和表EmployeeRange的employeeid字段一致

唯一(unique)约束

alter table employees  add constraint CK_st unique(name)--唯一约束和主键约束的区别是唯一约束可以为空,主键约束不可以为空,主键约束也是唯一约束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值