SQL 에서 중간에 있는 데이터를 delete로 삭제 시 그에 맞춰 전체 기본키도 함께 정렬하고 싶습니다.
조회수 714회
안녕하세요. 코딩 왕초보 입니다.
데이터베이스를 공부하고 있는 중에 SQL 구문으로 중간에 있는 값을 삭제 하였을 때 기본키도 알아서 정렬이 될 줄 알았는데 기본키는 이전에 있는 값 그대로 유지 되더라고요.
예를 들어서 데이터들 기본키가 각각 1,2,3,4,5,6 인 상태에서 3번 데이터를 delete 구문으로 삭제하니 남아있는 데이터의 기본키가 1,2,4,5,6인 상태로 남아있습니다.
이 기본키를 자동으로 1,2,3,4,5 처럼 순서대로 정렬하고 싶은데 인터넷에 검색해도 딱히 방법이 나오지 않아서 질문드립니다.
만약 이런 경우라면 데이터 삭제 후 다시 전체 데이터를 로드해서 기본키를 처음부터 다시 재정렬하는 것 이외에는 방법이 없을까요?
답변해 주시면 감사드리겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
-
일단, 기본키를 바꿀 수 있다고 생각하시면 안됩니다. 데이터베이스의 차원에서,
3
번 데이터는 인류 역사상 단 한 개만 존재해야/존재했어야 하며 단 한 번만 생성될 수 있고 단 한 번만 삭제될 수 있습니다. 그게 안 되면 뭐가3
번 데이터였는지 그런 게 있긴 했는지 등에 관한 역사 왜곡이 발생합니다. 유일성, 최소성 등의 개념을 반드시 숙지하세요.아무튼, 하고 싶으신 건 결국 기본키 오름차순 정렬한 것에 순번을 매기는 작업일 텐데요 그건 기본키와 별 관계 없는 좀 다른 개념입니다. MySQL이라면 이런 식으로 하시면 됩니다.
SELECT (@row_number := @row_number + 1) AS rnum, t.PK, foo, t.bar FROM table t, (SELECT @row_number := 0) as X ORDER BY t.PK
댓글 입력