Dev 개발 스터디 (동면 중)/Dev_log+Study 😶‍🌫️

[SQL] UPDATE SET 문 작성하다 DB를 날렸는데..

에이미쉬 2023. 3. 6. 23:56
728x90
반응형

SQL 쪽 외에 수정 프로세스는 URL 결합 부분을 해결하니 톱니바퀴가 잘 맞물린 것 같긴 한데 프런트에서 수정한 내용이 DB에 반영이 안 되는 이슈가 있다.
 
SQL 문법 참고를 위해 구글링으로 첫 번째 게시글에 들어갔다.
SQL UPDATE 문의 기본 형식을 확인했다.

일단 기본형식은 이렇습니다.
   
UPDATE [테이블] SET [열] = '변경할값' WHERE [조건]
   
   
조건이 없는 경우에는 테이블에 있는 열 전체가 변경할값으로 UPDATE 됩니다.

 

코드에 적용했다.

#코드 1

  <!-- 리뷰 수정 -->
  <update id="modifyReview" parameterType="ReviewVO">
    UPDATE REVIEW SET
      REVIEW_TITLE = '#{reviewTitle}',
      REVIEW_CONTENTS = '#{reviewContents}'
    WHERE REVIEW_NO  = '#{reviewNo}'
    is not null
  </update>

 

#코드 1 실행 결과

DB를 몽땅 날리는 대참사가 났다.
테스트라 다행이지 실제 상황이었으면..
후 상상도 하기 싫음 (;′⌒`)
 
변경할 값의 형식이 뭔가 충돌이 난 것 같은데
리뷰 삭제할 때 썼던 UPDATE 문이랑 비교해 보니 ' 작은따옴표 표기가 없었다. 지워주고 IS NOT NULL도 혹시 몰라 일단 같이 지워봤다.
결과는?

#코드 2 (최하단에 코멘트 추가)

  <!-- 리뷰 수정 -->
  <update id="modifyReview" parameterType="ReviewVO">
    UPDATE REVIEW SET
      REVIEW_TITLE = #{reviewTitle},
      REVIEW_CONTENTS = #{reviewContents}
    WHERE REVIEW_NO  = #{reviewNo}
  </update>

 

#코드 2 실행 결과

 
아까는 전체 DB 값이 '?' 물음표로 날아갔지만 이번엔 리뷰 1의 대한 값만 NULL로 변경되었다. (ノへ ̄、)
거의 근접한 것 같긴 한데 계속 헤맬 순 없으니 다른 게시글을 찾아보기로 했다.
 

/*
[update 문을 사용해서 다중 컬럼 데이터 수정 및 다중 조건 지정 실시]
1. update : 특정 테이블 데이터를 수정할 때 사용합니다
2. 문법 : update [테이블] set [수정할 컬럼 및 데이터] where [조건] 
*/

update test_user 
    set t_idx = '99', t_age = '35'
where t_idx = '101' and t_name = '김회계';
[출처] 5. (MYSQL/SQL) update 문을 사용해서 다중 컬럼 데이터 수정 및 다중 조건 지정 실시|작성자 투케이2K

 
입력된 Title을 Review 테이블에서 찾아서 WHERE절에 있는 Title에 다시 수정해줘.xml

 

#코드 3

  <!-- 리뷰 수정 -->
  <update id="modifyReview" parameterType="ReviewVO">
    UPDATE REVIEW SET
      REVIEW_TITLE = #{reviewTitle},
      REVIEW_CONTENTS = #{reviewContents}
    WHERE REVIEW_TITLE = #{reviewTitle}
    AND REVIEW_CONTENTS = #{reviewContents}
  </update>

 

#코드 3 실행 결과

 
DB에 직접 '리뷰 1 부활'이라고 써서 준비해놓고 게시판에서 '부활'을 지우고 저장했는데 '?' 물음표로 날아가지도 NULL 값으로 깨지지도 않았지만 정상적으로 수정이 완료되지도 않았다. 문법 형식은 맞는데 조건 선언이 틀린 것 같지만 지금의 나는 알 수 없다.
 
 
일단 오늘은 수정 메소드 성공한 것으로 자축하며 마무리...

 
 *참고
https://121202.tistory.com/28
https://blog.naver.com/PostView.naver?blogId=kkh0977&logNo=222468137458
 


SQL 문법상으로는 위의 코드 2가 맞는 문법인데 Where 참조를 잘못 걸어서 결과가 사라졌던 것이다.

디테일한 내용은 해결 포스팅에서 계속 👉 https://amyish.tistory.com/179

 

[CRUD_게시판 만들기] 05. Update : 글 수정 프로세스

*이슈: 게시글 내용 수정 불가 - 게시판 CRUD 만들기 작업 중, 프론트에서 값을 수정 후 수정 완료 버튼을 누르면 팝업창도 정상 호출되고 서버를 돌려도 디버깅도 잘 되고 콘솔 로그로 봤을 땐 수

amyish.tistory.com

 

728x90
반응형