例如:
Row Name
1 John
2 May
3 Marry
4 Tom
5 Peter
假设我删除了第2行和第3行,是否可以将Tom和Peter分别更新为第2和3行,并将下一个插入行更新为第4行?
是的,但您需要重新创建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;
没有,因为想想这可能会产生的问题。想象一下,如果您正在管理一个商店库存,并且每个商品都有一个基于数据库表中ID的内部条形码。你决定不再储存一件物品并将其从数据库中取出,然后ID大于删除物品的每件物品的每个ID都会减少1……所有这些物品上的所有条形码都变得毫无用处。
数据库中的身份证号码通常不会被人们使用或引用。它们是数据库中某个项目的静态索引,使计算机能够快速可靠地提取给定的记录。在创建表的ID字段时,请确保数据类型足够大,以便在出现这些丢失的ID时进行处理。
这只是一个建议。我不认为这是最好的解决方案。只要考虑一下。
您执行删除查询。
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。这只是一个想法。不是完整的代码。