我正在尝试使用sql的自动增量功能开发一个系统,以便在注册时为宿舍的租户分配房间号码。
但是,每次进入后它会自动增加1。因为宿舍在一个房间容纳四个人,我想把它改为4,所以在每4个条目之后我只得到一个id /房间号码。
我该如何解决这个问题?我正在使用php和sql。如果无法自动增量功能,请您建议另一种方法来实现这一目标吗?感谢。
答案 0 :(得分:1)
你需要:
它的工作原理如下:
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