即使其主键ID号小于输入的较早行,如何使行保持其条目位置
Posted
技术标签:
【中文标题】即使其主键ID号小于输入的较早行,如何使行保持其条目位置【英文标题】:how to make a row maintain its position of entry even though its primary key id number is less than the earlier row entered 【发布时间】:2017-08-22 13:31:50 【问题描述】:各位,我的主键 ID 是从我的 java 代码自动生成的。因此,要插入的新行的某些 id 号小于数据库中已插入的旧行。我的问题是:即使新行与旧行相比,新行的 id 编号更少,是否可以让数据库按照它们插入的顺序维护每一行? .我在 phpmyadmin 中使用 mysql。谢谢
【问题讨论】:
如果您将自动增强字段的任务留给数据库,而不是将其委托给应用程序层,事情会容易得多。 让数据库做它最擅长的事情。它没有弄乱你的代码,那你为什么要弄乱它的主键生成。 我同意前两个 cmets。我要补充一点,表中的顺序没有任何意义。如果您想对结果进行排序,请使用ORDER BY
,不要相信行顺序。
【参考方案1】:
不知道有没有办法在mySql中创建非聚集主键。
但是在 MS Sql Server 中,有一种方法可以创建如下的非聚集主键
ALTER TABLE my_table DROP CONSTRAINT pk_my_table;
ALTER TABLE my_table 添加约束 pk_my_table 主键 非集群(id);
或
如果您不关心实际将您的 java 生成的 id 作为主键。
并且您希望保持行的自然顺序,创建一个单独的列(具有自动生成的序列)并使其成为主键。
【讨论】:
如果您的问题解决了,请采纳答案:-)以上是关于即使其主键ID号小于输入的较早行,如何使行保持其条目位置的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Hibernate 插入记录正确自动生成主键 ID