티스토리 뷰

728x90

환경

  • spring boot 2.7.18
  • postgresql
  • mybatis

수정이나 삭제 한 데이터를 return 받고 싶은 경우가 있을땐 어떻게 할까?

미리 수정이나 삭제하기 전 오브젝트를 메모리에 담을 수도 있겠지만 postgresql에서는 삭제나 수정 후에 returning 이라는 키워드로 가져올 수 있다.

mybatis에서 사용하려면 select 태그에서 시작해야한다. 어찌보면 returning 되는 결과를 조회하는 거니까 당연한 것처럼 느껴진다.

<select id="" resultMap="vo" parameterType="java.lang.String">
    DELETE
    FROM 테이블
    WHERE id = #{파라미터}
    RETURNING *

    또는
    UPDATE 테이블
    SET 필드 = 수정할 값
    WHERE id = #{파라미터}
    RETURNING *
</select>

만약 return된 결과를 특정값으로 정렬해서 받아보고 싶다면?

이 작업은 CTE(공통 테이블 표현식)를 사용하여 수행할 수 있다.

<select id="" resultMap="vo" parameterType="java.lang.String">
    WITH deleted AS (
        DELETE
        FROM 테이블
        WHERE id = #{파라미터}
        RETURNING *)
    SELECT *
    FROM deleted
    ORDER BY 칼럼
</select>
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함