자동 증분 기본 키 재정렬 / 재설정 테이블이 있습니다. 테이블 중간에서 일부

자동 증분 기본 키가있는 MySQL 테이블이 있습니다. 테이블 중간에서 일부 행을 삭제했습니다. 이제 예를 들어 ID 열에 12, 13, 14, 19, 20과 같은 것이 있습니다. 15, 16, 17 및 18 행을 삭제했습니다.

연속성을 갖도록 기본 키를 재 할당 / 재설정 / 재주문하고 싶습니다 (예 : 19 a 15, 20 a 16 등).

내가 어떻게 해?



답변

기본 키 열을 삭제하고 다시 만들 수 있습니다. 그런 다음 모든 ID를 순서대로 다시 할당해야합니다.

그러나 이것은 아마도 대부분의 상황에서 나쁜 생각입니다. 이 테이블에 외래 키가있는 다른 테이블이 있으면 작동하지 않습니다.


답변

이 질문은 꽤 오래된 것 같지만 여기에서 검색하는 사람에 대한 답변을 게시합니다.

SET @count = 0;
UPDATE `users` SET `users`.`id` = @count:= @count + 1;

열이 다른 테이블에서 외래 키로 사용되는 경우 해당 테이블 의 외래 키 관계에 대한 ON UPDATE CASCADE기본값 대신 사용하십시오 ON UPDATE NO ACTION.

또한 AUTO_INCREMENT카운트 를 재설정하기 위해 다음 명령문을 즉시 발행 할 수 있습니다.

ALTER TABLE `users` AUTO_INCREMENT = 1;

MySQL의 경우 값을로 재설정합니다 MAX(id) + 1.


답변

내 User 테이블의 ID를 재설정하기 위해 다음 SQL 쿼리를 사용합니다. 위에서 말하면 다른 테이블과의 관계를 망칠 것이라고합니다.

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


답변

이 쿼리를 간단히 사용할 수 있습니다

alter table abc auto_increment = 1;


답변

SET  @num := 0;

UPDATE your_table SET id = @num := (@num+1);

ALTER TABLE your_table AUTO_INCREMENT =1;

나는 이것이 할 것이라고 생각


답변

또는 PhpMyAdmin에서 “AutoIncrement”플래그를 제거하고 저장 한 후 다시 설정 한 후 저장하면 재설정됩니다.


답변

SELECT * from `user` ORDER BY `user_id`;

SET @count = 0;

UPDATE `user`  SET `user_id` = @count:= @count + 1;

ALTER TABLE `user_id` AUTO_INCREMENT = 1;

원한다면 order by