>  기사  >  데이터 베이스  >  MySQL에 UNIQUE 제약 조건을 추가하면 중복 레코드는 어떻게 되나요?

MySQL에 UNIQUE 제약 조건을 추가하면 중복 레코드는 어떻게 되나요?

Linda Hamilton
Linda Hamilton원래의
2024-11-03 08:00:30919검색

What Happens to Duplicate Records When Adding a UNIQUE Constraint in MySQL?

중복 레코드에 대한 ALTER IGNORE TABLE ADD UNIQUE의 영향 확인

테이블의 여러 열에 대한 UNIQUE 제약 조건을 추가하려고 하면, 이 제약 조건을 위반하는 중복 레코드가 발생하는 것은 불가피합니다. MySQL의 이전 버전에서는 ALTER TABLE 문의 IGNORE 절이 이러한 중복을 처리하는 데 중요한 역할을 했습니다.

MySQL 5.7.4 이상: IGNORE 절 제거

그러나 MySQL 5.7.4부터 IGNORE 절은 더 이상 사용되지 않으며 이제 이를 사용하면 오류가 발생합니다. 따라서 아래 설명된 이전 동작은 더 이상 적용 가능하지 않습니다.

이전 MySQL 버전의 동작

IGNORE 절을 지원하는 이전 MySQL 버전의 경우 다음과 같은 동작이 발생합니다. UNIQUE 제약 조건 추가:

  • 첫 번째 행이 보존됩니다: 새로 고유한 열에 중복 값이 ​​있는 행 중 첫 번째 행만 유지됩니다.
  • 다른 중복 행 삭제: 중복 값이 ​​있는 나머지 행은 자동으로 삭제됩니다.
  • 잘못된 값 잘림: 제약 조건은 허용 가능한 제한에 맞게 잘리거나 수정됩니다.

제공된 예에서는 유형 = 'Apple' 및 소유자인 중복 레코드가 포함된 테이블에 UNIQUE 제약 조건이 (유형, 소유자)에 추가되었습니다. = 'Apple CO', 가장 작은 ID의 기록이 유지됩니다. 동일한 값을 가진 다른 레코드는 삭제됩니다.

그러나 이 동작은 MySQL 5.7.4 이전 버전에만 해당된다는 점에 유의하는 것이 중요합니다. 최신 MySQL 버전에서는 IGNORE 절이 더 이상 지원되지 않으며 충돌하는 모든 레코드로 인해 ALTER TABLE 작업이 실패하게 됩니다.

위 내용은 MySQL에 UNIQUE 제약 조건을 추가하면 중복 레코드는 어떻게 되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.