Tur*_*Ali 5 php mysql database auto-increment
我的db表看起来像这张照片.http://prntscr.com/22z1n
最近我创建了delete.php页面.它工作正常,但当我删除第21个用户下一个注册用户得到第24个ID而不是21.
是否可以将新注册的用户信息放到第一个空行?(在这种情况下排第21行)
在我的注册表中,新注册的用户可以在注册后写下现有用户的姓名,并与他们成为朋友.对于这种友谊,我有另一个表关联新注册用户和现有用户的ID.
为此,我在注册期间使用mysql_insert_id来获取新用户的id.但是在nex注册过程中删除了第21行后,mysql_insert_id给了我21号但是存储在第24行.并为新用户提供关联表21.我想解决这个问题
MySQLauto_increment列在内部维护一个数字,并且始终会递增该数字,即使在删除之后也是如此。如果需要填充空格,则必须在 PHP 中自行处理,而不是使用auto_increment表定义中的关键字。
如果您需要维护外键关系,则回滚以填充空行 ID 可能会导致各种困难,而且确实不建议这样做。
可以auto_increment使用SQL语句重置,但不建议这样做,因为这会导致重复键错误。
-- Doing this will cause problems!
ALTER table AUTO_INCREMENT=12345;
Run Code Online (Sandbox Code Playgroud)
编辑 要按照注释中的描述强制执行外键关系,您应该添加到表定义中:
FOREIGN KEY (friendid) REFERENCES registration_table (id) ON DELETE SET NULL;
Run Code Online (Sandbox Code Playgroud)
填写正确的表名和列名。现在,当用户从注册中删除时,他们的好友关联将被清空。如果您需要与不同的用户重新关联,则必须使用 PHP 来处理。 mysql_insert_id()不再有帮助。
如果你需要找到删除后数据库中仍然存在的最高编号的id来与好友关联,请使用以下命令。
SELECT MAX(id) FROM registration_table;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |