2013-07-11 5 views
4

은 테이블의 전체 데이터를 삭제하고 ID가 우리가 새로운 행을 삽입하려고 할 때 명령은 테이블에서 데이터를 제거하는 데 도움이 삭제 1삽입 새 행 1

에서 시작하여 새 행을 삽입 할 수있는 가능성이 있음 사전에 감사 ID가 마지막으로 삽입 된 행의 ID가 + 1 (마지막으로 삽입 된 ID가있는 경우 5 다음 새 ID가 6이어야 함) 될 것입니다하지만 난 1

로 명령을 잘라 이외의 제안을 그 ID를 저장할

+0

'TRUNCATE'의 문제점을 공유 할 수 있습니까? – peterm

답변

7

모든 레코드를 삭제 한 후 수행

ALTER TABLE tablename AUTO_INCREMENT = 1 
MySQL의 문서에서

는 : Link

당신은 이미 사용되었는지 어떤보다 작거나 같은 값으로 카운터를 재설정 할 수 없습니다. MyISAM의 경우, 값이 보다 작거나 같으면 현재 AUTO_INCREMENT 열에있는 최대 값으로 값이 현재 최대 값에 1을 더한 값으로 재설정됩니다. InnoDB의 경우, 값이 열의 현재의 최대치보다 작은 이면, 에러는 발생하지 않고 현재의 순서 값은 변경되지 않습니다.

+0

참고 용으로 +1 ... – Bhushan

+0

ur 답변을 주셔서 감사합니다. 잘 작동합니다. – Satish

0

당신은 모든 행을 삭제하고 자동 증가 값을 재설정 할 TRUNCATE 명령을 사용하는 경우 :

TRUNCATE tablename; 
1

사용이 TRUNCATE 표는 자동 증가 값으로 재설정 TABLENAME :

0

당신의 뜻을 sequence에서 두 개의 명령을 실행해야합니다.

먼저 표의 모든 데이터를 삭제하십시오.

delete TABLE_NAME 

그런 다음 "ID"ID 열 것을, 1

insert into TABLE_NAME(ID) values(1) 
1

나는 당신의 설명에서 가정에 ID를 설정? 이 경우

,

TRUNCATE TABLE tablename; 

모든 행을 삭제하고 다시 1 채울 신원 필드를 재설정 모두. @mhasan 답변으로

ALTER TABLE `tablename` AUTO_INCREMENT = 1 

+0

왜 downvote입니까? 내 대답은 완전히 정확합니다. –

+2

나는 downvote하지 않았지만, OP가 TRUNCATE 이외의 솔루션을 명시 적으로 요구했기 때문에 downvote가있을 수 있습니다. 그럼에도 불구하고 TRUNCATE가 더 나은 솔루션입니다. –

0

이 작업을 수행하는 방법입니다.

또 다른 방법은 id 열을 삭제하고 다시 작성하는 것입니다.

ALTER TABLE `tablename` DROP `id`; 
ALTER TABLE `tablename` AUTO_INCREMENT = 1; 
ALTER TABLE `tablename` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

그러나 테이블이 다른 테이블과 관계가 있다면 좋은 해결책이 아닙니다.