2009-06-29 86 views
0

我有一個Web應用程序,我在其中與MySql數據庫進行交互。當我刪除一條記錄時,下次創建新記錄時,它的插槽似乎會重新使用。由於每條記錄都有一個連續的主鍵,所以下一條記錄會有一個新的鍵5,但是新的記錄將被放置在最後一個清空的位置,比如2號記錄以前的位置。有沒有辦法直接在列表底部添加新記錄?也許有辦法用MySQL查詢瀏覽器來做到這一點?在Mysql中禁用重新使用已刪除的記錄

這是什麼我描述一個例子:

 
1 userName1 password1 
2 userName2 password2 --> next operation will delete this record 
3 userName3 password3 
4 userName4 password4 

當記錄#2走了,下一次我做了新的插件,記錄#5佔用了2號點:

 
1 userName1 password1 
5 userName5 password5 
3 userName3 password3 
4 userName4 password4 

是否有推薦的方式來指示MySQL(可能在創建表時)應該只將新記錄添加到列表的底部?所以,我們想禁用自動記錄重用。

在此先感謝您的幫助 最親切的問候

回答

4

只需添加

ORDER BY id 

到您的查詢的末尾(其中 「ID」 是1,2,3,4,5在列你的表)

+0

但這順序要呈現出來,但它實際上並沒有影響到基礎表和重新使用已刪除的記錄。 – 2009-06-29 14:07:40

0

您可以創建一個使用序列設置ID(據甲骨文從存儲器寫入,所以你必須檢查它是否在MySQL中是不同的)「開刀片」觸發:

create sequence table_name_id_seq order nocache cycle maxvalue 99999999; 

create or replace trigger table_name_id 
before insert on table_name for each row 
begin 
    select table_name_id_seq.nextval 
    into :new.id 
    from dual 
    ; 
end; 
0

InnoDB將在一定程度上爲您處理。所有InnoDB表都具有某種形式的主鍵,這些主鍵通常被設置爲按順序處理插入。

如果您無法使用InnoDB,我相信您將不得不求助於更改源代碼以適應MyISAM的工作方式。我對MySQL的其他「常規」存儲引擎並不是特別熟悉,所以我不確定是否還有其他的選擇。

0

創建日期字段(DATE_ADDED)和ORDER BY DATE_ADDED會更好