关于数据库id自动增长的问题
2013-01-13 22:43
288 查看
关于数据库id自动增长的问题,一般来说,我们设置数据库的时候会把id设置成auto_increment(即自动增长的)。但是在我们插入数据后,再对其中的数据进行删除后,id就变得不连续了。那么我们怎么对有删除数据的数据使其重新按照id自动增长排序呢?
下面是一种PHP操作MySQL使得数据重新按照id自动增长的程序。
要是还要更新其他的表,使得更新后的id对应,可在函数change_id中进行各种操作。
下面是一种PHP操作MySQL使得数据重新按照id自动增长的程序。
<?php $hostname = "localhost"; $database = "mydatabase"; $username = "root"; $password = "123456"; $connect = mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); $no = 1; function change_id($id) { global $no; $sql = 'update my_table set id = ' . $no . ' where id = ' . $id; mysql_query($sql); $no = $no + 1; } mysql_select_db($database, $connect); $query_Record = "SELECT id FROM my_table ORDER BY id ASC"; $all_Record = mysql_query($query_Record); $row_Record = mysql_fetch_assoc($all_Record); do { change_id( $row_Record['id'] ); } while ($row_Record = mysql_fetch_assoc($all_Record)); // 重新设置id自增起点 mysql_query('alter table my_bable AUTO_INCREMENT = ' . $no); echo 'ok'; ?>
要是还要更新其他的表,使得更新后的id对应,可在函数change_id中进行各种操作。
相关文章推荐
- 关于自动编号的 id 作为数据库主键的问题
- 关于rs.addnew后立即得到自动增长ID的问题
- 关于插入记录后查询自动增长ID问题
- 【MyBatis】关于MyBatis插入自动增长id的Bean到数据库后返回的id为null的解决办法
- 关于数据库中的主键的自动增长
- 关于配置了数据库方言为MySQLInnoDBDialect后Hibernate不能自动建表的问题
- 关于配置了数据库方言为MySQLInnoDBDialect后Hibernate不能自动建表和建库的问题
- 关于删除数据库中含有自增长字段的表,清空后,自增长字段重新从1开始的问题解决方法。
- 关于ORACLE通过file_id与block_id定位数据库对象遇到的问题的一点思考
- extjs中关于数据库id不能重复的问题
- sqlserver 2012 重启是 ID 自动增长 1000的问题
- 关于oracle设置不活动自动断开连接导致java访问数据库时发生异常的问题
- 关于配置了数据库方言为MySQLInnoDBDialect后Hibernate不能自动建表的问题
- 关于Hibernate access id 自增长问题
- MongoBD解决没有自动增长ID 的问题
- 关于因和数据库库断开数据源没有自动重连变无效的问题
- 关于配置了数据库方言为MySQLInnoDBDialect后Hibernate不能自动建表的问题
- 关于Hibernate save方法执行之后得到的id与数据库中实际存入值的id不一致的问题
- hibernate中关于数据库方言导致不能自动生成数据库表的问题