테이블에서 모든 행을 삭제해야하지만 새 행을 추가 할 때 자동 증가가있는 기본 키 ID가 1에서 각각 0에서 다시 시작되기를 원합니다.
테이블에서 모든 행을 삭제해야하지만 새 행을 추가 할 때 자동 증가가있는 기본 키 ID가 1에서 각각 0에서 다시 시작되기를 원합니다.
답변:
삭제하지 말고 자르십시오.
Truncate table XXX
테이블 핸들러는 마지막으로 사용한 AUTO_INCREMENT 값을 기억하지 않지만 처음부터 계산을 시작합니다. 일반적으로 시퀀스 값을 재사용하지 않는 MyISAM 및 InnoDB의 경우에도 마찬가지입니다.
소스 .
TRUNCATE
외래 키 제약 조건으로 인해 사용할 수없는 경우 모든 행을 삭제 한 후 alter 테이블을 사용하여 auto_increment를 다시 시작할 수 있습니다.
ALTER TABLE mytable AUTO_INCREMENT = 1
DELETE FROM tablename;
(그러나이 FK 제약이 잘 때 작동하지 않을 - 참조 stackoverflow.com/a/5452798/507761을 )
테이블에 외래 키가 있으면 항상 다음 코드를 사용합니다.
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의 답변을보십시오.