我有一个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会更好

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top