插入时的MySQL增量字段

时间:2017-01-11 20:12:17

标签: mysql database

我有一个列表表,其中包含订单字段。

  

我想知道,当我插入新记录时,是否可以找到上一行的顺序并增加新行?

或者我应该通过执行OrderBy(' order')查询并获取max()值来自己在PHP中使用它?

谢谢!

1 个答案:

答案 0 :(得分:1)

当您使用MySQL声明表格时,您可以使用auto-increment id,因此您不必处理其增量:

CREATE TABLE people (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);

正如in the documentation所述,

  

整数或浮点列可以具有附加属性   AUTO_INCREMENT。插入值NULL(推荐)或0时   在索引AUTO_INCREMENT列中,该列设置为下一列   序列值。通常这是值+ 1,其中值是最大的   表中当前列的值。 AUTO_INCREMENT个序列   从1开始。

我建议您在插入新记录时完全省略该字段。

然后,您可以检索用LAST_INSERT_ID() SQL函数(或PHP语言的mysqli_insert_id函数)插入的最后一个id。

<小时/> 但由于它不是您想要的,可能是因为MarioZ comment引用的原因之一:

  

如果您已经使用自动增量ID,则可以使用它   订单(可能是一个原因)。用于自动增加列   必须设置为主要且唯一,不能是重复值。自动增量来自记录中的数字,如果插入10则为   行和你删除2,下一个插入自动增量将是   11(如果最后一个是8,你希望它是9)。那些是可行的   没有将它用于@Notflip想要的原因:P

...您必须在检索最后一个订单之前和之后使用PHP LOCK TABLE and UNLOCK TABLE SQL instructions,然后更新新订单,以避免同时使用相同的记录&#34 ;为了&#34;