2011-05-13 112 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:蒂莫西

雖然仍然保持數據庫的神聖索引?