복붙노트

[SQL] 정지 MySQL의 재사용 AUTO_INCREMENT ID를

SQL

정지 MySQL의 재사용 AUTO_INCREMENT ID를

나는 AUTO_INCREMENT 기본 키가있는 테이블이있다. 테이블의 마지막 행이 삭제 된 경우, 다음 - 삽입 된 행은 동일한 ID를 취할 것입니다.

t-SQL처럼 행동하고, ID를 다시 사용하지 MySQL의를 가져 오는 방법이 있나요? 삭제 된 행이 잘못 데이터베이스 외부에 뭔가에서 참조되는 그런 경우, 행이 오류를 강조, 반환되지 않습니다.

해결법

  1. ==============================

    1.이 경우, 당신은 아마 공개적으로 액세스 할 수있는 장소에서 AUTO_INCREMENT 인덱스를 사용해서는 안됩니다.

    이 경우, 당신은 아마 공개적으로 액세스 할 수있는 장소에서 AUTO_INCREMENT 인덱스를 사용해서는 안됩니다.

    어느 다른 데이터에서 키 필드를 유도하거나 아이디의를 생성하기 위해 다른 메커니즘을 사용합니다. 당신이 (잠재적으로 심각한) 성능에 영향을 알고 있어야하지만 내가 전에 사용했던 방법 중 하나는,이 마지막으로 사용 된 키 및 증가를 추적 할 수있는 "키"테이블입니다.

    그런 식으로, 당신은 당신이 원하는 키도 숫자가 아닌 모든 유형을 사용하고, 자신의 알고리즘을 사용하여 증가 할 수 있습니다.

    나는 과거에 6 자 숫자 키를 사용하고 있습니다 :

    CREATE TABLE `TableKeys` (
      `table_name` VARCHAR(8) NOT NULL,
      `last_key` VARCHAR(6) NOT NULL,
      PRIMARY KEY (`table_name`)
    );
    
    SELECT * FROM `TableKeys`;
    
    table_name | last_key
    -----------+---------
    users      | U00003A2
    articles   | A000166D
    products   | P000009G
    
  2. ==============================

    2.MySQL 버전 8로, MySQL은 더 이상 오랜 (2003 년 오픈!) 버그 # 199를 수정, AUTO_INCREMENT ID 값을 재 - 사용하지 않습니다.

    MySQL 버전 8로, MySQL은 더 이상 오랜 (2003 년 오픈!) 버그 # 199를 수정, AUTO_INCREMENT ID 값을 재 - 사용하지 않습니다.

    더 많은 정보를 위해, MySQL의 커뮤니티 관리자에 의해이 블로그 게시물 lefred 참조 : https://lefred.be/content/bye-bye-bug-199/

  3. ==============================

    3.즉 레코드가 삽입 된 다음 삭제됩니다 우리의 MySQL 데이터베이스 작업은 다음 번호가 아니라 삭제 된 일이있는 방법이 아니다.

    즉 레코드가 삽입 된 다음 삭제됩니다 우리의 MySQL 데이터베이스 작업은 다음 번호가 아니라 삭제 된 일이있는 방법이 아니다.

  4. ==============================

    4.내가 알고있는 것처럼,이 일을 방법이 없습니다. 삭제 된 플래그를 추가하고 삭제 플래그를 설정하는 대신 행을 제거하여 주위에 작업하는 것이 좋습니다.

    내가 알고있는 것처럼,이 일을 방법이 없습니다. 삭제 된 플래그를 추가하고 삭제 플래그를 설정하는 대신 행을 제거하여 주위에 작업하는 것이 좋습니다.

    "올바른"대답은 행이 삭제되면, 당신이 그것을 참조하지 않아야한다는 것입니다. 당신은 DB를 다른 곳 dB에서 참조 삭제할 행을 허용하지 않습니다 있는지 확인 외래 키를 추가 할 수 있습니다.

  5. ==============================

    5.MySQL의 매뉴얼은 말합니다 :

    MySQL의 매뉴얼은 말합니다 :

    이 엔진 가능한 이러한 동작은,의 MyISAM이 아닌 다른이 보인다

  6. from https://stackoverflow.com/questions/3718229/stop-mysql-reusing-auto-increment-ids by cc-by-sa and MIT license