자동 증가 필드의 간격 해결
자동 증가 필드의 목적은 오로지 데이터베이스의 레코드를 고유하게 식별하는 것입니다. 삭제된 기록으로 인해 발생한 공백을 메우는 것이 바람직해 보일 수 있지만 일반적으로 그렇게 하는 것은 나쁜 데이터베이스 관행으로 간주됩니다.
공백 메우기 전략의 결함
공백을 채우면 다음이 발생할 수 있습니다.
-
데이터베이스 결함 디자인: 자동 증가 ID가 레코드 식별자로 사용되는 것 이상의 특정 관련성을 갖는다는 것을 암시합니다.
-
데이터 조작 오류: 의도치 않게 데이터를 변경하거나 불일치를 초래합니다.
대안 고려 사항
간격을 채우는 대신 다음 대안을 고려하십시오.
-
미래 공백 예약: ID 시퀀스 끝에 충분히 큰 공백 추가 향후 삭제 가능성을 수용합니다.
-
문서화 공백: 공백의 의미를 설명하는 문서를 제공하세요.
-
불필요한 삭제 방지: 가능하면 자동 증가 필드가 있는 테이블에서 레코드를 삭제하지 마세요.
MySQL에서 Gap-Fill 강제 적용 (고급)
꼭 필요한 경우 MySQL에서 공백을 메우려면 고급 절차가 필요합니다.
-
임시 테이블 만들기: CREATE TEMPORARY TABLE NewIDs( NewID INT UNSIGNED AUTO_INCREMENT, OldID INT UNSIGNED).
-
임시 테이블 채우기: INSERT INTO NewIDs(OldId) SELECT Id FROM OldTable ORDER BY Id ASC.
-
상위 및 하위 테이블 업데이트: UPDATE 부모, 자식, 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.
그러나 이 접근 방식은 고유한 위험으로 인해 주의해서 진행하는 것이 좋습니다. .
위 내용은 자동 증가 필드의 공백을 채워야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!