2012-08-16 46 views
1

我有一个ID为d_deviceId的表devicedetails作为自动增量。如果我删除第一个ID(即0),则需要插入ID值为0的下一个条目。检查表的初始ID(0)是否为空

如何在MySQL中实现此操作。

如果我删除任何其他ID(比如5),我用下面的查询:

SELECT d_deviceId + 1 FROM devicedetails d1 WHERE NOT EXISTS 
(SELECT 1 FROM devicedetails d2 WHERE d2.d_deviceId = d1.d_deviceId + 1) limit 0,1 

由此我得到除了最初的ID的下一个可重复使用的ID。

任何一个建议的方式?

回答

3

停止使用该查询;它会在高并发下给你不正确的结果。请改用d_deviceId列中的AUTO_INCREMENT属性 - 每次插入行时它都会自动将下一个未使用的值分配给列。要求将d_deviceId配置为表格的主键。但是,这可能已经是这种情况了。

http://dev.mysql.com/doc/refman/5.5/en/example-auto-increment.html

+0

也许这不是我想要的。随着现有的代码,我需要检查d_deviceID的初始ID是否为空。 – Gapchoos 2012-08-16 04:23:43

+0

@duskwuff是对的。您应该在查询发生任何更改之前使用阅读上面发布的链接。 – 2012-08-16 04:31:32