关于唯一约束的处理
2012-12-13 18:28
225 查看
一个很典型的例子,登录名不能重复的问题
非常危险的方式:
if(service.checkLoginName(loginName)) {
//在多线程情况下,当前线程运行到此处时有可能被挂起,而另外一个线程完全可以使用loginName注册成功
service.register(......);//然后当前线程恢复运行,再使用loginName注册成功,这样就有了登录名一样的两个用户。
}
解决方法:在数据库中创建唯一约束,而不是自己做处理保证唯一性(唯一性无法保证)
try {
service.register(......);//创建用户
}catch(DataIntegrityViolationException e) {//登录名已存在
//给页面提示信息
}
非常危险的方式:
if(service.checkLoginName(loginName)) {
//在多线程情况下,当前线程运行到此处时有可能被挂起,而另外一个线程完全可以使用loginName注册成功
service.register(......);//然后当前线程恢复运行,再使用loginName注册成功,这样就有了登录名一样的两个用户。
}
解决方法:在数据库中创建唯一约束,而不是自己做处理保证唯一性(唯一性无法保证)
try {
service.register(......);//创建用户
}catch(DataIntegrityViolationException e) {//登录名已存在
//给页面提示信息
}
相关文章推荐
- Oracle 数据库唯一约束中的NULL的处理
- Oracle数据库中违反唯一约束的处理
- 又来说一下顺序~关于唯一索引和唯一约束的顺序
- 关于 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值 的解决办法
- 关于oracle表已设置主键自增仍报违反唯一约束问题
- 关于mysql删除唯一约束的问题(求解答)
- 关于sql server与mysql外键唯一约束的区别
- Django设置联合唯一约束 -- migrate时报错处理
- 关于设置 UITableView 的 tableHeaderView为使用了 SnapKit 约束的自定义 view 时出现的 BUG 的处理
- 关于强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- 关于 未能启用约束。一行或多行中包含违反非空、唯一或外键
- 微软MSDN的介绍,关于数据库中唯一约束、check约束
- 关于强类型Dataset出错提示未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
- 关于 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值 的解决办法
- 又来说一下顺序~关于唯一索引和唯一约束的顺序
- MySQL 表字段唯一性约束设置方法以及为什么一定要在表中设置字段的唯一约束,而不能在自己的业务代码处理。
- 关于脏读与唯一约束
- Oracle 数据库唯一约束中的NULL的处理
- 关于地形altas的处理
- 唯一约束 和 唯一索引 有什么区别?