아무나 빌려가세요

mysql 중간데이터 삭제후 순서대로 idx 업데이트 하기 본문

오늘 배운 프로그래밍

mysql 중간데이터 삭제후 순서대로 idx 업데이트 하기

빌라노바 2023. 11. 7. 18:01

프로시저 : 쿼리를 하나의 메서드처럼 생성하여 복잡한 쿼리문을 실행할 수 있다.

프로시저를 만들어 중간의 idx값이 삭제된후 다시 숫자순서대로 재정렬 한다.

CREATE PROCEDURE `AdjustIdx`(p_idx int)
BEGIN

    DELETE FROM table WHERE idx = p_idx;

    SET @new_idx = 0;
    UPDATE table
    SET idx = (@new_idx := @new_idx + 1)

    ORDER BY idx;

END

DELETE FROM table WHERE idx = p_idx; : 원하는 idx값의 컬럼을 삭제한다.
SET @new_idx = 0; : 가상변수 @new_idx를 생성한다.
UPDATE table SET idx = (@new_idx := @new_idx + 1) : idx값을 순서대로 하나씩 업데이트한다.
ORDER BY idx; : idx값으로 재정렬한다.