加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

php – 自动递增“id”列的问题

发布时间:2021-05-23 10:36:18 所属栏目:MySql教程 来源:网络整理
导读:我的db表看起来像这张照片. http://prntscr.com/22z1n 最近我创建了delete.php页面.它工作正常,但当我删除第21个用户下一个注册用户得到第24个ID而不是21. 是否可以将新注册的用户信息放到第一个空行? (在这种情况下排第21行) 在我的注册表中,新注册的用

我的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.我想解决这个问题

最佳答案 MySQL auto_increment列在内部维护一个数字,并且即使在删除后也会一直增加它.如果需要填充空白区域,则必须自己在PHP中处理它,而不是在表定义中使用auto_increment关键字.

如果要维护外键关系,则回滚以填充空行ID会导致各种困难,并且实际上不建议这样做.

可以使用SQL语句重置auto_increment,但不建议这样做,因为它会导致重复的键错误.

-- Doing this will cause problems!
ALTER table AUTO_INCREMENT=12345;

编辑
要按照注释中的描述强制执行外键关系,您应该添加到表定义中:

FOREIGN KEY (friendid) REFERENCES registration_table (id) ON DELETE SET NULL;

填写正确的表和列名称.现在,当从注册中删除用户时,他们的朋友关联将被清零.如果您需要与其他用户重新关联,则必须使用PHP进行处理. mysql_insert_id()不再有用.

如果您需要在删除后仍然在数据库中找到编号最高的ID以与朋友关联,请使用以下内容.

SELECT MAX(id) FROM registration_table;

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读