Mysql和JDBC返回过时的数据

时间:2017-11-20 10:01:34

标签: java mysql jdbc transactions

我们正面临着一个奇怪的mysql数据问题。我们有一个seqgenerator表,它保存id的当前seq。每次下订单时,我的应用程序都会查询seqgenerator表并更新一个数字并将其保存回seqgenerator。

我们用来获取的查询是"从order_seq中选择order_id,其中appid =?更新" 查询更新"更新order_seq set order_id =? appid =?"

这个工作正常,直到上周,上周选择查询返回id已经在前一天使用过了,id被重置并从那里开始递增,因为我们已经覆盖了1天的订单。

1 个答案:

答案 0 :(得分:1)

你的设计非常糟糕。

首先,Id应始终是唯一的,这样可以防止您的数据被覆盖。

此外,SQL还有一个自动增量字段,因此您不必每次都更新一个ID

  

自动增量允许自动生成唯一编号   将新记录插入表格时。

     

这通常是我们想要创建的主键字段   每次插入新记录时自动

     

来源:   https://www.w3schools.com/sql/sql_autoincrement.asp