[英]disabling re-use of deleted records in Mysql
我有一個與MySql數據庫進行交互的Web應用程序。 刪除記錄時,下次創建新記錄時似乎重新使用了其插槽。 由於每個記錄都有一個順序的主鍵,所以下一個記錄將有一個新的鍵(例如5),但是新記錄將放置在最后一個清空的位置,例如以前的記錄編號2。 有沒有辦法將新記錄直接添加到列表的底部? 有沒有辦法用MySQL Query Browser做到這一點?
這是我正在描述的示例:
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(也許在表創建時)新記錄應僅添加到列表的底部? 因此,我們想禁用自動記錄重用。
在此先感謝您的幫助
只需添加
ORDER BY id
到查詢末尾(其中“ id”是表中的1、2、3、4、5列)
您可以創建一個“插入時”觸發器,該觸發器使用序列來設置ID(根據Oracle,從內存寫入,因此您必須檢查它在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;
InnoDB將在某種程度上為您處理。 所有的InnoDB表都具有某種形式的主鍵,這些主鍵是集群的,並且通常將它們設置為順序處理插入。
如果您無法使用InnoDB,我相信您將不得不求助於更改源代碼以適應MyISAM的工作方式。 我對MySQL的其他“普通”存儲引擎不是特別熟悉,因此我不確定是否還有其他選擇。
創建日期字段(date_added)和ORDER BY date_added會更好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.