Mysql 자체 증가 키 id 는 이 단계 로 증가 하 는 처리 가 아 닙 니 다.
소개
my sql 데이터베이스 에 데 이 터 를 추가 할 때 ON DUPLICATE KEY UPDATE 를 사용 하여 데이터 업 데 이 트 를 할 때 id 가 단계별 로 증가 하 는 것 이 아니 라 중단 적 으로 증가 할 수 있 습 니 다.
만약 에 id 가 10 에서 다음 에 추가 하면 15 또는 다른 숫자 일 수 있 습 니 다.두 숫자 사이 의 간격 은 ON DUPLICATE KEY UPDATE 가 실행 하 는 횟수 입 니 다.즉,ON DUPLICATE KEY UPDATE 가 업 데 이 트 를 실행 할 때 이 표 의 메 인 키 를 자체 적 으로 하나 추가 하 는 것 입 니 다.
그림 에서 보 듯 이
질문
같은 표 에 대해 추가 와 수정 을 할 때 저 는 두 개의 mapper 인터페이스 방법 을 사 용 했 습 니 다.즉,ON DUPLICATE KEY UPDATE 작업 을 두 번 사 용 했 습 니 다.그러면 이 표 의 메 인 키 는 업데이트 할 때 자체 적 으로 증가 할 것 입 니 다.다음 insert 때 나타 날 거 야.
3.해결 방법
데이터베이스 의 insert 와 update 를 분리 합 니 다.
홈 키 의 장단 점 을 스스로 늘리다.
홈 키
이러한 방식 은 데이터 베 이 스 를 사용 하여 제공 하 는 자체 증가 수치 형 필드 를 자체 증가 키 로 하 는 것 이다.그 장점 은:
(1)데이터 베 이 스 는 자동 번호 로 속도 가 빠 르 고 증 가 량 이 증가 하 며 순서대로 저장 하면 검색 에 매우 유리 하 다.
(2)디지털 형 은 점용 공간 이 작고 정렬 하기 쉬 우 며 프로그램 에서 전달 하 는 것 도 편리 하 다.
(3)비 시스템 을 통 해 기록 을 추가 할 때 이 필드 를 지정 하지 않 아 도 되 며,메 인 키 중복 문 제 를 걱정 하지 않 아 도 된다.
사실 그 단점 은 바로 그 장점 에서 나 온 것 이다.단점 은 다음 과 같다.
(1)자동 성장 으로 인해 지 정 된 ID 의 기록 을 수 동 으로 삽입 할 때 번 거 로 워 집 니 다.특히 시스템 이 다른 시스템 과 통합 되 었 을 때 데이터 가 져 오기 가 필요 할 때 원래 시스템 의 ID 가 메 인 키 충돌 이 발생 하지 않도록 보장 하기 어렵 습 니 다(전 제 는 오래된 시스템 도 디지털 형 입 니 다).특히 새로운 시스템 이 출시 되 었 을 때 신 구 시스템 이 병행 되 고 이 라 이브 러 리 의 데이터베이스 가 존재 하 는 상황 에서 양 방향 동기 화가 필요 할 때 홈 키 를 추가 하 는 것 은 악몽 입 니 다.
(2)시스템 이 통합 되 거나 연결 되 었 을 때 신 구 시스템 의 메 인 키 가 디지털 형 이 다 르 면 메 인 키 데이터 형식 을 수정 할 수 있 고 이 는 다른 외부 키 와 관련 된 표 의 수정 을 초래 할 수 있 으 며 결과 도 심각 하 다.
(3)시스템 도 디지털 형 이 라면 가 져 올 때 새로운 오래된 데 이 터 를 구분 하기 위해 오래된 데이터 메 인 키 전에 문자 표지(예 를 들 어'o',old)를 통일 적 으로 추가 하여 오래된 데이터 임 을 나타 내 려 고 할 수 있 습 니 다.그러면 자동 으로 증가 하 는 디지털 형 은 또 하나의 도전 에 직면 하 게 될 것 입 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 my sql 에 이모 티 콘 저장my sql 에 emoji 표정 을 저장 하려 면 utf8mb 4 문자 집합 을 사용 해 야 합 니 다. 이것 은 4 바이트 저장 입 니 다. 최소 지원 버 전 은 5.5.3 + 입 니 다. 그렇지 않 으 면 새로운...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.