> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 자동 증가 필드에서 공백을 채울 수 있습니까?

MySQL의 자동 증가 필드에서 공백을 채울 수 있습니까?

Susan Sarandon
풀어 주다: 2024-11-14 18:01:02
원래의
538명이 탐색했습니다.

Can I Fill Gaps in Auto-Increment Fields in MySQL?

자동 증가 필드의 공백 채우기

질문: 자동 증가 필드의 공백을 원활하게 채울 수 있는 방법이 있습니까? 새 삽입으로 필드를 증가시키겠습니까?

답변:

순서나 의미적 의미를 위해 자동 증가 필드에 의존하는 것은 일반적으로 바람직하지 않지만 채울 때 상황이 있습니다. 이러한 격차가 바람직할 수 있습니다. 이러한 경우 MySQL 기능을 활용하여 새로운 순차 ID 세트를 생성할 수 있습니다.

CREATE TEMPORARY TABLE NewID(NewID INT UNSIGNED AUTO INCREMENT, OldID INT UNSIGNED)를 사용하여 임시 테이블을 생성하고 기존 ID를 모두 삽입합니다. 오름차순:

INSERT INTO NewIDs (OldID)
SELECT Id
FROM OldTable
ORDER BY Id ASC
로그인 후 복사

이렇게 하면 기존 ID와 새 ID 간의 매핑이 생성됩니다.

다른 테이블의 참조를 업데이트하려면 외래 키 제약 조건을 비활성화하세요.

SET foreign_key_checks = 0;
로그인 후 복사

그런 다음 상위 및 하위 테이블을 업데이트합니다.

UPDATE
Parent, Child, NewIds
SET
Parent.ParentId = NewIds.Id,
Child.ParentId = NewIds.Id
WHERE
Parent.ParentId = NewIds.ParentId AND
Child.ParentId = NewIds.ParentId
로그인 후 복사

마지막으로 외래 키 확인을 다시 활성화합니다.

SET foreign_key_checks = 1;
로그인 후 복사

정리를 위해 임시 테이블을 삭제합니다.

DROP TABLE NewIds
로그인 후 복사

자동 증가 필드를 수정하면 참조 무결성과 성능에 영향을 미칠 수 있으므로 이 프로세스를 주의해서 사용해야 한다는 점에 유의하는 것이 중요합니다.

위 내용은 MySQL의 자동 증가 필드에서 공백을 채울 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿