知道自动增量字段mysql java的下一个值

时间:2013-01-08 23:10:46

标签: mysql field auto-increment next

我想知道自动增量字段的下一个值 我想测试一下:

select max(contactid) from contact

我加1 但我意识到它可以给我一个错误 举个例子 如果我插入一条记录,我将其删除 所以如果我在字段后插入会增加两个

我怎样才能实现这一目标? 谢谢

3 个答案:

答案 0 :(得分:4)

这个问题有多种解决方案:

<强> 1。 (优先)停止尝试预测自动增量值

这是更典型的情况,基本上是按设计使用自动增量。这假设您在插入之前实际上不需要自动增量值。你能做的是:

DROP TABLE IF EXISTS t;
CREATE TABLE t (id INT UNSIGNED NOT NULL auto_increment, x INT NOT NULL, PRIMARY KEY(id));
INSERT INTO t (x) VALUES (100);
SELECT LAST_INSERT_ID();

SELECT LAST_INSERT_ID()的来电将返回刚刚为您INSERT生成的ID。

<强> 2。专门设置ID生成表以生成ID

您可以创建一个只包含自动增量列的表,如下所示:

DROP TABLE IF EXISTS id_generator;
CREATE TABLE id_generator (id INT UNSIGNED NOT NULL auto_increment, PRIMARY KEY(id));

然后,您可以使用以下内容生成新的唯一ID:

INSERT INTO id_generator (id) VALUES (NULL);
SELECT LAST_INSERT_ID();

并使用该ID插入您实际使用的表中。只要所有生成的ID都来自此ID生成表,就不会发生冲突。但是,生成这些ID会产生成本,并且自动增量效率不高。

第3。使用外部ID生成方案

这或多或少类似于解决方案2,但根本不使用MySQL来生成ID。您可以使用类似于生成字符串的UUID / GUID方案,或者使用Snowflake之类的内容生成整数ID。

答案 1 :(得分:0)

你应该像这样使用LAST_INSERT_ID

SELECT LAST_INSERT_ID()

它将返回AUTO_INCREMENT ID字段的最后一个值。

此处有更多详情:http://goo.gl/RkmR5

答案 2 :(得分:-1)

这将为您提供插入的 next id值:

SELECT LAST_INSERT_ID() + 1;