Mysql数据库autoincreament id不按升序增加

时间:2015-07-17 10:21:27

标签: php mysql unique

我在mysql phpmyadmin中创建了一个表,我给了“id”自动增加,并为图像创建了一个列,这个列不应该是同一个id的相同图像,这就是为什么我将它更改为唯一。 现在的问题是id已经自动赋值,但是如果我将触发我的插入查询,它的插入ID为exa:-1到10,再次下次我将触发我的查询其插入ID号如:-40到50现在它直接采取1000至1010等。 我正在使用简单的查询: -

mysqli_query($con,"insert into Wheel_Place_Images(place_image_url,creation_date,last_modification_date,status)values('$image_url','$date','$date','1')");

我无法理解这里的问题是什么。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码在MySQL中将初始值重置或设置为自动增量。

使用此:

ALTER TABLE `Wheel_Place_Images` AUTO_INCREMENT=1001;

或者如果您还没有添加ID列,也请添加

ALTER TABLE `Wheel_Place_Images` ADD place_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD INDEX (place_id);

您不需要手动插入place_id

mysqli_query($con,"INSERT INTO `Wheel_Place_Images`
                     (place_image_url,creation_date,last_modification_date,status)
                     Values ('$image_url','$date','$date','1')");

更新的答案

我有一个非常简单的技巧来避免自动递增的ID中的间隙。

只需从id字段中获取最大值,然后将1添加到其中。

$row = mysqli_query($con, "SELECT MAX(place_id) AS `maxid` FROM `Wheel_Place_Images`");
if ($row) {
    $maxid = $row->maxid + 1; 
}

然后

mysqli_query($con,"INSERT INTO `Wheel_Place_Images`
                     (place_id, place_image_url,creation_date,last_modification_date,status)
                     Values ('$maxid','$image_url','$date','$date','1')");