例如:
Row Name
1 John
2 May
3 Marry
4 Tom
5 Peter
假设我删除了第2行和第3行,是否可以将Tom和Peter分别更新为第2行和第3行,将下一个插入行更新为第4行?
答案 0 :(得分:2)
是的,但您需要重新创建Row:
ALTER TABLE `users` DROP `Row`;
ALTER TABLE `users` AUTO_INCREMENT = 1;
ALTER TABLE `users` ADD `Row` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
答案 1 :(得分:1)
不,因为想想这可能造成的问题。想象一下,如果您正在管理商店库存,并且每个商品都有一个内部条形码,则基于数据库表中的ID。您决定永远不再存储一个项目并将其从数据库中取出,然后ID大于删除项目的每个项目的每个ID都会减1 ...所有这些条目上的所有条形码都变得无用。
数据库中的ID号通常不是由人们使用或引用。它们是数据库中某个项目的静态索引,它允许计算机快速可靠地提取给定记录。在创建表的ID字段时,请确保使数据类型足够大,以便在发生这些ID时丢失这些ID。
答案 2 :(得分:0)
这只是一个建议。我不是说这是最好的解决方案。请考虑一下。
您执行删除查询。
DELETE FROM table_name WHERE Row IN (2,3);
删除后,使用PHP进行选择查询请求,并将数据集设置为数组。
SELECT Row, Name from table_name ORDER BY Row ASC;
然后使用循环执行UPDATE。
$index = 1;
foreach($dataset as $item)
{
// Your update query
$sql = "UPDATE table_name SET Row=$index where Name='" . $item['Name'] . "'";
$index++;
}
在插入下一个查询之前,您必须获取Row的最大值并将+1值设置为插入查询的Row。 这只是一个想法。不是完整的代码。