db 테이블 id 생성 방법을 바꾸고 싶습니다.

db 테이블 id 생성 방법을 바꾸고 싶습니다.

QA

db 테이블 id 생성 방법을 바꾸고 싶습니다.

본문

저희 사이트의 제품이 열개 있다고 치면 테이블 아이디도 10까지 있어야 하지만 위치나 순서 때문에 제품을 복사하고 지우는 잡업이 누적되다보니 테이블 아이디는 10을 넘어갑니다.

3667515381_1636344698.0022.jpg실제로 제품의 수가 51보다 적습니다.

그래서 저번에 이것을 수정하는 방법을 물었는데 실제로 주소는 db(데이터베이스)를 보여주는 것일 뿐이고 바꿀려면 db를 바꿔야 한다고 하네요.

 

그리고 다른 사이트가 있는데 이 사이트는 마지막 아이디를 지우면 다음에 새로 글을 작성할 시 지웠던 아이디로 생성됩니다. (ID 5번을 지우고 새로 글을 올리면 6번이 아닌 5번부터 시작합니다.)

https://www.09master.com/shop/goods/goods_view.php?goodsno=518&category=007

 

그래서 본론으로, 저희 사이트의 db 방식을 아래 사이트의 방식으로 바꾸고 싶습니다.

정확히는 글을 지우고 다시 생성할시 테이블 id가 지웠던 글의 id로 시작되었으면 합니다.

 

이런 방법을 아시거나, 설명된 사이트를 아시는 분이 있으시면 알려주셨으면 합니다. 감사합니다.

이 질문에 댓글 쓰기 :

답변 3

그누보드 게시판은 게시물 아이디(테이블 아이디라는 말은 틀렸음)가 자동증가 하도록 설정되어있습니다

따라서 삭제 후 아이디(wr_id)를 재설정하는 작업이 필요 할 것으로 보입니다

(단 게시물에 답변이나 댓글을 사용하지않을 경우만 가능)

등록하는 게시물 갯수가 100개 200개 이런 정도라면 문제가 되지않을 것입니다

 

 스킨폴더에 delete.tail.skin.php 생성

<?php

sql_query("ALTER TABLE $write_table AUTO_INCREMENT=1");
sql_query("SET = 0");
sql_query("UPDATE $write_table SET wr_id = :=+1");
sql_query("UPDATE $write_table SET wr_num = -1*wr_id , wr_parent = wr_id");

 

선택삭제시에도 가능하게 위 화일을 복사한 후

화일명을 delete_all.tail.skin.php으로 변경허여 스킨폴더에 저장

 

삭제하기전에 삭제하는 게시물 wr_id가 가장 큰 값인지 검사하여 가장 나중에 등록한 게시물이면

행번호 자동증가 값을 삭제한 번호로 설정하는 코드만 실행되도록 조건을 넣으면 더 좋은 코드가 되겠습니다(위 코드 첫번쩨 행 참고 : sql_query("ALTER TABLE $write_table AUTO_INCREMENT=$cnt");

 

 

 

 

 

 

 

 

 

 

테이블의 키가 auto_increment 로 설정되있거나 한 경우 , 

키 관련 값을 insert 하지않아도 자동으로 1씩 증가하면서 생성되는데요, 

테이블의 데이터를 delete 로 싹 지우고 다시 insert 를 해도 

1부터 시작하는게 아니라 이전까지 남이있던 키 증가값에 맞춰서 시작하게되서 좀 난감할때가 있는데요,

그럴때는 delete 가 아닌 truncate 를 사용해서 테이블을 깨끗하게 밀어주시면되고,

현재 사용중인 테이블에서 말씀하신 내용을 적용하려면, 

insert 시에 가장 큰 값의 id 를 select 후에 1을 더해서 직접 insert 쿼리에 넣어서 인서트해주면 될것같네요

답변을 작성하시기 전에 로그인 해주세요.
전체 26
QA 내용 검색
filter #id ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT