2011-05-13 111 views
0

假设我在一个表中有80个条目,并且在填充表时我将它设置为自动递增。然后我删除了从各个位置的10条记录,现在我看起来像条目:SQL/PHP重新填充数据库表的密钥ID#

7,8,9,11,14,16,等等

我想他们重新编号按顺序顺序,但不想手动做手动。我将如何根据字母顺序为他们创建新的密钥ID号码?

提前致谢!

+1

假设你没有在任何地方引用此ID,是否有任何理由要改变它们? – Datajam 2011-05-13 12:34:51

+1

总之:你不应该。更详细的:你没有得到任何好处,你可能会破坏你的数据库。一个ID是一个标识符。通常,当一个ID改变时,这意味着它是一个新的记录而不是一个改变的记录。 – KingCrunch 2011-05-13 12:35:50

+0

我引用了ID,需要在每个条目旁边显示#s – 2011-05-13 12:36:14

回答

4

你不想那么做,也不需要那样做。 它违反了数据库设计的许多原则,并导致不想要的结果(相信我)。

如果您需要对某些东西进行顺序编号,请为此创建一个触发器,请勿为此目的而依赖主键。

0

除了以前的答案,如果你只是想找到一种方法来顺序排序你的行时输出到某些视图不能你动态地使用PHP?

table: dogs 
id | name 
--------- 
1 | Rover 
4 | Fido 
7 | Timothy 

然后(修改任何循环您正在运行

<? 
$Dogs = mysql_fetch_array(your sql query); 

foreach ($Dogs as $cnt => $Dog) 
{ 
    echo ($cnt+1).": ".$Dog['name']."<br />"; 
} 
?> 

将输出: 1:路虎 2:菲 3:蒂莫西

虽然仍然保持数据库的神圣索引?