Row Name
1 John
2 May
3 Marry
4 Tom
5 Peter
想我删除的行2和第3行是它能够更新汤姆和彼得行ID分别为2和3,下一个插入行为行ID 4?
Row Name
1 John
2 May
3 Marry
4 Tom
5 Peter
想我删除的行2和第3行是它能够更新汤姆和彼得行ID分别为2和3,下一个插入行为行ID 4?
不,因为想想这可能产生的问题。试想一下,如果您正在管理商店库存,并且每个商品都有一个内部条形码,则基于数据库表中的ID。您决定不再购买一件商品并将其从数据库中取出,然后ID大于已移除商品的每件商品的ID都减1 ......所有这些商品上的所有条码都变得毫无用处。
数据库中的ID号通常不用于人们使用或引用。它们旨在成为数据库中某个项目的静态索引,以便计算机快速可靠地提取给定记录。在创建表的ID字段时,请确保您的数据类型足够大,以便在发生这些丢失的ID时对其进行解释。
是的,但你需要重新创建行:
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;
这仅仅是一个建议。我不认为这是最好的解决方案。请考虑。
您执行您的删除查询。
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值设置为插入查询的行。 这只是一个想法。不是完整的代码。
你可以尝试使用那种触发器o情况 – Gerep 2012-01-06 15:01:33
什么是触发器? – red23jordan 2012-01-06 15:29:14
触发器是一个数据库代码,将根据某些数据库事件自动执行。检查这里的更多细节,我假设你正在使用MySQL:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html – Gerep 2012-01-06 15:31:40