MySQL Delete all rows from table and reset ID to zero
我需要删除表中的所有行,但是当我添加一个新行时,我希望主键ID(具有自动增量)分别从0开始从1开始。
不要删除,使用truncate:
The table handler does not remember the last used AUTO_INCREMENT value, but starts counting from the beginning. This is true even for MyISAM and InnoDB, which normally do not reuse sequence values.
资源。
如果您不能使用
1 |
如果表有外键,那么我总是使用以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SET FOREIGN_KEY_CHECKS = 0; -- disable a foreign keys check SET AUTOCOMMIT = 0; -- disable autocommit START TRANSACTION; -- begin transaction /* DELETE FROM table_name; ALTER TABLE table_name AUTO_INCREMENT = 1; -- or TRUNCATE table_name; -- or DROP TABLE table_name; CREATE TABLE table_name ( ... ); */ SET FOREIGN_KEY_CHECKS = 1; -- enable a foreign keys check COMMIT; -- make a commit SET AUTOCOMMIT = 1 ; |
但差异在于执行时间。 看看Sorin的回答。
一个有趣的事实。
我确信
设置自动增量总共增加了一秒,但它仍然好多了。
因此,我建议尝试两者,看看哪种方法更适合您的情况。