题
我有一个Web应用程序,其中我与MySQL数据库交互。当我删除一条记录,似乎它的插槽,下一次我创建了一个新的记录重复使用。由于每个记录具有连续的主键,下一个记录将有一个新的密钥说5,但在新的记录将被放置在最后清空点,说哪里记录编号2中使用的是。有没有办法有直接在列表的底部增加了新的记录?有没有办法做到这一点与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的一个推荐的方式(比如在创建表)新纪录方面,只能在列表的底部添加?所以,我们希望禁止自动记录重新使用。
在此先感谢您的帮助 最亲切的问候
解决方案
只需添加
ORDER BY id
到查询的末尾(其中, “ID” 是1,2,3,4,5列在表中)
其他提示
您可以创建一个使用序列设置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;
InnoDB的会处理,对于你在一定程度上。所有InnoDB表有某种形式的主键中的哪一个集群,以及那些通常设置以顺序地处理插入。
如果你正在使用InnoDB的阻止,我相信你将不得不求助于改变源代码来适应的MyISAM如何工作的。我不是特别熟悉的任何其他“正常”存储为MySQL引擎,所以我不知道是否有另一种选择。
创建日期字段(DATE_ADDED)和ORDER BY DATE_ADDED会更好
不隶属于 StackOverflow