채택완료

회원 삭제 후 mb_no 번호 정렬

2025-07-28 (월) 18:37:33 1,638

회원 삭제 시 정보가 완전하게 삭제하도록 수정을 하였습니다.

회원 삭제 후 mb_no 번호가 중간중간 비어 있는데, 혹시 삭제할 때마다 번호를 재정렬하는 방법이 있을까요?

3번을 지우면 4번 부터 3, 4, 5... 이렇게

고수님들 답변 부탁 드립니다.

감사합니다.

|

답변 3개

채택된 답변
+20 포인트
2025-07-28 (월) 19:07:44

<?php
include_once('./common.php'); // 그누보드 환경 포함

// 관리자 체크
if (!$is_admin) {
    die("관리자만 실행할 수 있습니다.");
}

// 트랜잭션 시작 (InnoDB인 경우 유효)
sql_query("START TRANSACTION");

$sql = "SELECT mb_id FROM g5_member ORDER BY mb_no ASC";
$result = sql_query($sql);

$new_no = 1;
$map = [];

// 1단계: mb_no를 중복 피하기 위해 임시 음수 번호로 먼저 설정
while ($row = sql_fetch_array($result)) {
    $mb_id = $row['mb_id'];
    $temp_no = -$new_no; // 예: -1, -2, -3 ...

    sql_query("UPDATE g5_member SET mb_no = '{$temp_no}' WHERE mb_id = '{$mb_id}'");
    $map[] = ['mb_id' => $mb_id, 'new_no' => $new_no];

    $new_no++;
}

// 2단계: 임시 번호 → 실제 번호로 재설정
foreach ($map as $m) {
    sql_query("UPDATE g5_member SET mb_no = '{$m['new_no']}' WHERE mb_id = '{$m['mb_id']}'");
}

sql_query("COMMIT");

echo "? mb_no 재정렬 완료! 총 {$new_no} 명 처리됨.";
?>

2025-07-28 (월) 23:02:13

해당은 고유로 자동 증가라서 그렇게 하고 싶으시면 따로 번호를 하나 만드시고 관리를 하는게 나으실거 같습니다. 처리하는 방법은 따로 만든 번호를 만약 번호 5면 5이상인 6부터 하나씩 빼는 쿼리를 만드시면 될 거 같습니다.

2025-07-28 (월) 19:06:06

sql 에서 쿼리보면 맨뒤에 정렬 쿼리 넣어서 order by 고유번호 desc

답변을 작성하려면 로그인이 필요합니다.