我有一个列表表,其中包含订单字段。
我想知道,当我插入新记录时,是否可以找到上一行的顺序并增加新行?
或者我应该通过执行OrderBy(' order')查询并获取max()值来自己在PHP中使用它?
谢谢!
答案 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。
如果您已经使用自动增量ID,则可以使用它 订单(可能是一个原因)。用于自动增加列 必须设置为主要且唯一,不能是重复值。自动增量来自记录中的数字,如果插入10则为 行和你删除2,下一个插入自动增量将是 11(如果最后一个是8,你希望它是9)。那些是可行的 没有将它用于@Notflip想要的原因:P
...您必须在检索最后一个订单之前和之后使用PHP LOCK TABLE
and UNLOCK TABLE
SQL instructions,然后更新新订单,以避免同时使用相同的记录&#34 ;为了"