当我删除数据库中的行时,ID(自动增量)现在变得更长。假设我有1 2 3 4 5 6 7 8 9
并删除行3 4 5
。删除后,我希望ID显示为1 2 3 4 5 6
,而不是1 2 6 7 8 9
请问我该怎么做?
更新
我正在使用此代码显示从db生成的注释中的序列号...(在while循环中)
<?php
$serial = 0;
$serial++;
echo"<div class='commentserial'>
<div id='$serial'></div>
<a href='#$serial'>$serial</a>
</diV>";
?>
现在我在评论显示上有一个分页脚本,当我点击第二页而不是序列号从1开始到$ per_page Number。
所以我觉得如果我使用数据库ID,那么编号将不会从后续分页页面的1开始。
答案 0 :(得分:2)
你想做什么不是好习惯。主键中的孔应该不会留在那里。想象一下,例如在另一个表中引用主表中的ID 25
。如果主表中的某些内容发生变化,则引用会突然指向不同的记录。
同样适用于网络链接。拥有像
这样的网址details.html?id=255
突然指出不同的记录非常坏。
如果你想要一个完美的序列号,你可能最好在应用程序级别创建它。
答案 1 :(得分:1)
use:SELECT * FROM table_name LIMIT offset,row_count
示例:
if(isset($_GET['page'])) $page=$_GET['page'];
else $page=1;
$row_count=10;
$offset=($page-1)*$row_count;
$sql="select * from table1 limit $offset,$row_count";
答案 2 :(得分:0)
自动增量仅适用于合成键。这些键没有任何语义含义,因此它们是否按顺序排列并不重要。
如果您的ID列具有语义含义,您应该给它一个有意义的名称,并且不要在其上使用自动增量(如果需要,可以考虑使用自动增量创建一个新的合成键。)
要实现分页,您可以使用数据库查询。考虑mysql关键字LIMIT
和OFFSET
。这样生成链接的代码就不必关心ID序列中的漏洞了。