如何在mysql中设置自动增量的增量值

时间:2015-05-07 10:02:53

标签: php mysql sql sql-server

我正在尝试使用sql的自动增量功能开发一个系统,以便在注册时为宿舍的租户分配房间号码。

但是,每次进入后它会自动增加1。因为宿舍在一个房间容纳四个人,我想把它改为4,所以在每4个条目之后我只得到一个id /房间号码。

我该如何解决这个问题?我正在使用php和sql。如果无法自动增量功能,请您建议另一种方法来实现这一目标吗?感谢。

4 个答案:

答案 0 :(得分:1)

你需要:

http://dev.mysql.com/doc/refman/5.1/en/replication-options-master.html#sysvar_auto_increment_increment

它的工作原理如下:

mysql> SET @@auto_increment_increment=4;

因此,当您插入4行时,自动增量列将为:

4,8,12,16

答案 1 :(得分:0)

据我所知,您无法更改自动增量字段的步骤。我建议添加另一个字段并写一个触发器,根据自动增量字段(自动增量/ 4)更新其值。

答案 2 :(得分:0)

不要使用auto_increment - 它无法处理多个记录将共享相同数字的情况,尽管您可以手动重置(请参见下文)也不适用于数字可能以随机顺序重复使用的情况。

你可以只有一个room_number字段和mysql integer types之一(例如tinyint,smallint,mediumint ......),或者你可以将数据库分成两个表,一个用于人(每个人都有一个id)和第二个将这些id映射到房间。

但是,如果你这样做了,那么在将人员的详细信息添加到数据库之前,你会先写一个select查询来检查哪些房间号码可用

如果听起来不太清楚,您可能需要阅读关系数据库。

如果你需要重置auto_increment(如果你已经填满了一个你正要擦除的测试数据的数据库,那么很有可能做到这一点,您希望真正的"生产"数据从1)开始,您可以使用:

ALTER TABLE [tablename] AUTO_INCREMENT = 1

https://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

答案 3 :(得分:0)

我认为这不可能通过自动增量来实现。 也许你可以这样做:

//Pseudo code
//First you get the count of the highest id, to see how many users are in the last room.
SELECT COUNT(*) FROM table WHERE id=(SELECT id FROM table ORDER BY id DESC LIMIT 1)

//If the result of the last query is >= 4 then insert the next customer with id +1