对数据库中的表操作之后 id会自动增加1 这个效果是需要的
但是把数据全删除时 id 不是从1开始 是继续递增
通过执行truncate table table_name 可以使表的id重置为从1开始 可是表中的数据也没有了
问:
如何不删除数据 将数据库中的id重置
但是把数据全删除时 id 不是从1开始 是继续递增
通过执行truncate table table_name 可以使表的id重置为从1开始 可是表中的数据也没有了
问:
如何不删除数据 将数据库中的id重置
调试欢乐多
CREATE TEMPORARY TABLE tmp_name
AS
SELECT xx,xxx,xxxx FROM table_name;TRUNCATE TABLE table_name;INSERT tmp_name(xx,xxx,xxx)
SELECT xx,xxx,xxxx FROM tmp_name;DROP TABLE tmp_name;
-> id int AUTO_INCREMENT primary key,
-> col1 int
-> );
Query OK, 0 rows affected (0.16 sec)mysql>
mysql> insert into table1(col1) values
-> (1),(2),(3),(4),(5);
Query OK, 5 rows affected (0.08 sec)
Records: 5 Duplicates: 0 Warnings: 0mysql>
mysql> select * from table1;
+----+------+
| id | col1 |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
+----+------+
5 rows in set (0.00 sec)mysql>
mysql> update table1 set id=id+1;
ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'mysql> update table1 set id=id+1 order by id desc;
Query OK, 5 rows affected (0.06 sec)
Rows matched: 5 Changed: 5 Warnings: 0mysql> select * from table1;
+----+------+
| id | col1 |
+----+------+
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
| 5 | 4 |
| 6 | 5 |
+----+------+
5 rows in set (0.00 sec)mysql>
alter table dd drop id;
alter table dd add `id` int aUTO_INCREMENT, ADD INDEX (id);
ALTER TABLE dd AUTO_INCREMENT = 1;
select * from dd
通过执行truncate table table_name 可以使表的id重置为从1开始 可是表中的数据也没有了
那你的需求到底是什么?要不要保留表中的数据?如果不保留数据,则直接用你的方法 truncate table table_name 就行了。如果保留数据则不行,因为 AUTO_INCREMENT 必须是主键。
楼主这个想法只有二楼的大搬运能实现。否则与mysql规则相抵触。