create table quiz(E_Id INT NOT NULL AUTO_INCREMENT PRIMAR KEY, E_name VARCHAR(255), E_Salary INT)
现在每当我在表格中插入数据时,自动增量按预期工作。 现在,当我删除记录时,数字序列不会减少。
假设我有Id 1,2,3,4,5的记录。当我删除第2和第3个记录时,序列从数字6继续。我希望如果删除记录,则编号应该得到自动递减
答案 0 :(得分:0)
无法自动递减。但是你可以使用其他简单的方法。
DROP你是auto_incrementing的字段。 改变表格以使用相同的属性再次添加字段。
然后自动递增列表将重置。
注意:在您下桌时要小心。它可能会丢弃您的整个数据。
答案 1 :(得分:0)
通过递减1(-1)更新所有已删除的ID(如果auto_increment列中有3个id,并且删除id 2,则id 3将设置为id = 2),然后“ alter table set auto_increment = 1更新auto_increment计数器。 代码(包括从网站文件夹中删除图像文件:
$allGood = false;
if(isset($_GET['id']) != ""){
$item = $_GET['id'];
$query = "SELECT * FROM products WHERE id = ?";
if($getImgPath = $sqlConnection->prepare($query)){
$getImgPath->bind_param("i",$item);
$getImgPath->execute();
$result = $getImgPath->get_result();
$row = $result->fetch_array();
$deletedItemId = $row['id'];
if(isset($row['image']) != ""){
$imgPath = "../../../../".$row['image'];
if(unlink($imgPath)){
$query = "DELETE FROM products WHERE id = ?";
if($delete = $sqlConnection->prepare($query)){
$delete->bind_param("i",$item);
if($delete->execute()){
$query = "SELECT * FROM products";
if($getIds = $sqlConnection->query($query)){
while($row = $getIds->fetch_array()){
if($row['id']>$deletedItemId){
$newId = $row['id']-1;
$query = "UPDATE products SET id=? WHERE id=?";
if($updateIds = $sqlConnection->prepare($query)){
$updateIds->bind_param("ii",$newId,$row['id']);
if($updateIds->execute()){
$allGood = true;
}
}
} else {$allGood = true;}
}
}
}
}
}
}
}
}
if($allGood == true){
$query = "ALTER TABLE products AUTO_INCREMENT = 1";
if($sqlConnection->query($query)){
echo "success!";
}else{echo "error.";}
}