문제

MySQL 데이터베이스와 상호 작용하는 웹 응용 프로그램이 있습니다. 레코드를 삭제하면 다음에 새 레코드를 만들 때 슬롯이 재사용되는 것 같습니다. 각 레코드에는 순차적 기본 키가 있으므로 다음 레코드에는 새로운 키가 5 개가되지만 새로운 레코드는 마지막으로 비운 지점에 배치됩니다. 목록의 맨 아래에 새 레코드를 직접 추가 할 수있는 방법이 있습니까? MySQL Query 브라우저를 사용하여 그렇게 할 수있는 방법이 있습니까?

이것은 내가 묘사 한 내용의 예입니다.

1 userName1 password1
2 userName2 password2 --> next operation will delete this record
3 userName3 password3
4 userName4 password4

레코드 #2가 사라지면 다음에 새로운 추가를 할 때 레코드 #5는 2 위를 차지합니다.

1 userName1 password1
5 userName5 password5
3 userName3 password3
4 userName4 password4

MySQL (아마도 테이블 생성에서)에게 새로운 레코드가 목록 하단에만 추가되어야한다는 권장 방법이 있습니까? 따라서 자동 레코드 반영을 비활성화하고 싶습니다.

도움을 주셔서 감사합니다

도움이 되었습니까?

해결책

간단히 추가하십시오

ORDER BY id

쿼리 끝까지 ( "ID"는 테이블의 1, 2, 3, 4, 5 열입니다)

다른 팁

시퀀스를 사용하여 ID를 설정하는 "on insert"트리거를 만들 수 있습니다 (Oracle에 따라 메모리에서 작성하십시오. MySQL에서 다른지 확인해야합니다).

create sequence table_name_id_seq order nocache cycle maxvalue 99999999;

create or replace trigger table_name_id
before insert on table_name for each row
begin
  select table_name_id_seq.nextval
    into :new.id
    from dual
  ;
end;

Innodb는 어느 정도 당신을 위해 그것을 처리 할 것입니다. 모든 InnoDB 테이블에는 클러스터링 된 일부 형태의 기본 키가 있으며, 이는 일반적으로 인서트를 순차적으로 처리하도록 설정됩니다.

InnoDB를 사용하지 못하면 MyISAM의 작동 방식을 조정하기 위해 소스 코드 변경에 의지해야한다고 생각합니다. 나는 MySQL의 다른 "정상적인"저장 엔진에 특히 익숙하지 않으므로 다른 대안이 있는지 확실하지 않습니다.

날짜 필드 생성 (date_added)과 date_added의 주문이 더 나을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top