我有一个Web应用程序,我在其中与MySql数据库进行交互。当我删除一条记录时,它似乎在下次创建新记录时重复使用它的插槽。由于每个记录都有一个顺序主键,下一个记录将有一个新键,即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(可能在创建表格时)新记录只应添加到列表的底部?所以,我们想禁用自动记录重用。
提前感谢您的帮助 最亲切的问候
答案 0 :(得分:4)
只需添加
ORDER BY id
到查询的末尾(其中“id”是表格中的1,2,3,4,5列)
答案 1 :(得分:0)
你可以创建一个“on insert”触发器,它使用一个序列来设置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;
答案 2 :(得分:0)
InnoDB会在某种程度上为您处理。所有InnoDB表都有某种形式的主键,它是集群的,通常设置为按顺序处理插入。
如果您无法使用InnoDB,我相信您将不得不求助于更改源代码以适应MyISAM的工作方式。我对MySQL的任何其他“普通”存储引擎并不是特别熟悉,所以我不确定是否还有其他选择。
答案 3 :(得分:0)
创建日期字段(date_added)和ORDER BY date_added会更好