如何处理数据库中ID重复的问题
2017-10-10 11:41
1381 查看
对于ID的增长可以是自增长或者是手动增长,自增长的话,如果测试添加一批数据进来就有可能与之前或者之后的插入数据的ID重复,那么这个时候可以有如下解决思路:
1、设置自增长主键的基值
alter table test auto_intrement = number;
查看数据库里数据的最大的值,将number设置成一个比之还大的值,即往后插入数据时的ID值是从number开始增长
2、通过手动增加主键的值
先查询数据库中ID的最大值,然后插入数据时设置ID为ID+1
3、使用生成主键ID的工具类
例如:ID为 K+年月日时分秒+7为随机数
这样的ID即有业务意义同时还确保唯一,缺点是长度较长
工具类如下,仅供参考:
public class DataBaseUtil {
public static String getTimeUUID() {
return "K" + (new SimpleDateFormat("yyMMddHHmmss")).format(new Date()) + getStringRandom(7);
}
public static String getStringRandom(int length) {
String val = "";
Random random = new Random();
for(int i = 0; i < length; ++i) {
val = val + String.valueOf(random.nextInt(10));
}
return val;
}
}
1、设置自增长主键的基值
alter table test auto_intrement = number;
查看数据库里数据的最大的值,将number设置成一个比之还大的值,即往后插入数据时的ID值是从number开始增长
2、通过手动增加主键的值
先查询数据库中ID的最大值,然后插入数据时设置ID为ID+1
3、使用生成主键ID的工具类
例如:ID为 K+年月日时分秒+7为随机数
这样的ID即有业务意义同时还确保唯一,缺点是长度较长
工具类如下,仅供参考:
public class DataBaseUtil {
public static String getTimeUUID() {
return "K" + (new SimpleDateFormat("yyMMddHHmmss")).format(new Date()) + getStringRandom(7);
}
public static String getStringRandom(int length) {
String val = "";
Random random = new Random();
for(int i = 0; i < length; ++i) {
val = val + String.valueOf(random.nextInt(10));
}
return val;
}
}
相关文章推荐
- 1,大型的电商网站数据库要如何设计? 2,如何处理数据库死锁问题?
- Ext JS 3.3.1中TreePanel动态加载数据库信息时ID重复的问题
- 如何处理database中表的自增长Id归零问题
- 如何处理数据库连接空闲太久导致失败的问题
- jq和ajax进行表单校验,对于新增行ID重复问题的处理
- C#中如何处理DBNull?是不是数据库设计问题?
- mysql 多台数据库同步server-id 重复导致的问题
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 怎么解决重复提交的问题,即网络不好的时候,提交按钮点了一次,但是却发起了多次http url请求,数据库中写入了多条重复记录(当然ID是不重复的,因为毕竟是多条http url记录)
- qtp,VBScript操作MySQL数据库时,关于多次访问数据库的问题,数据集如何处理
- 常见问题:如何使用AWR报告来诊断数据库性能问题 (文档 ID 1523048.1)
- 数据库安装错误的解决方式 【转】如何处理 SQL Server 安装过程中的 COM+ 检查失败问题 - ...
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 关系型数据库如何处理“库存”问题
- Cassandra 如何处理跨数据中心的数据库延时问题
- 解决java读取大文件内存溢出问题、如何在不重复读取与不耗尽内存的情况下处理大文件
- 数据库表中有重复记录,如何删除这些重复记录保留ID最大的一个信息
- 常见问题:如何使用AWR报告来诊断数据库性能问题 (文档 ID 1523048.1)
- 如何解决重复日志问题,谈谈错误用返回值还是用抛异常进行处理
- extjs中关于数据库id不能重复的问题