자동 증분 기본 키가있는 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