簡體   English   中英

在MySQL中禁用重復使用已刪除的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM