今天来个简单的。
我们的数据库里有一张表,用来存放实时数据。有一个字段是主键,内容规定为系统时间戳,精确到毫秒级。
也就是类似这样。
INSERT INTO TABLENAME (F_IT_ID) VALUES (TO_CHAR(SYSTIMESTAMP,'YYYYDDMMHI24MISSFF'))
这个指令是由JDBC发出并执行的。现在遇到一个问题。因为数据库操作速度过快,而这个字段又是主键。于是呢……
报错了。违反唯一约束。
也就是说,对Oracle而言,同一毫秒内插入了两条数据。
那么,那么,要怎么解决呢?
我们的Java代码大致如下:
getConnection...
for (int i = 0;i < size;i++){
executeCommand...
}
closeConnection...
如何解决呢?
上述代码均为伪代码,请不要深究语法细节。从宏观的层面上说,应该怎么解决这个问题呢?
解决Oracle主键重复问题
在使用Oracle数据库时,若采用系统时间戳作为主键且精度到毫秒级,在高并发场景下可能会出现主键重复的情况。本文探讨了在Java应用中通过JDBC批量插入数据时遇到的这一问题,并提出了可能的解决方案。
952

被折叠的 条评论
为什么被折叠?



