使用mysql为每个实例获取唯一的最大ID

时间:2012-12-15 06:02:38

标签: java mysql

我正在使用带前缀+自动增量ID的字段。对于每个实例,我将获取最大+ 1的ID并将其添加到前缀。有人可以建议我一个让这个独特的方法吗?

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

Insert into table1 (id, user_id)
SELECT MAX(id)+1, CONCAT('a',CAST(MAX(id)+1 AS char))
FROM table1;

See this SQLFiddle

答案 1 :(得分:0)

使用max(id)+1的问题是可能有多个线程进行相同的调用,因此结果不是唯一的。有几种方法可以解决这个问题。第一种是使用序列,每次请求新的id时,数据库服务器都会增加数字。您可以使用包含数字的表,但在更新数字时必须锁定表。或者,您可以允许数据库在插入表时为您创建密钥,并在插入后检索密钥。一切都有效。

我更喜欢使用Hibernate,并确定如何为我目前使用的数据库实现ID。