-1

我正在使用带有前缀 + 自动增量 ID 的字段。对于每个实例,我都采用 ID 的 max+1 并将其添加到前缀中。任何人都可以建议我一种让这个独一无二的方法吗?

4

2 回答 2

0

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

我更喜欢使用 Hibernate 并让它决定如何为我当前使用的数据库实现 ID。

于 2012-12-15T06:20:52.973 回答
0

你可以试试这个:

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

看到这个 SQLFiddle

于 2012-12-15T06:16:48.873 回答