본문 바로가기
공부/Trouble Shooting

트리거 이용해서 북마크 그룹 수정될 때 수정된 날짜 업데이트 하기

by son_i 2023. 9. 11.
728x90

처음에 BookmarkDAO의 edit 메소드에서 

prepared.setTimestamp로 이 함수가 호출 될 때 == 업데이트 될 때 현재 시각을 넣어주려고 했는데 

https://blogshine.tistory.com/281

 

[JDBC] PrepareStatement에서 TimeStamp, LocalDateTime 사용하기

글의 작성 이유 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이번 글 에서는 JDBC를 사용하여 DB에 날짜를 저장하는 삽질에 대한 글을 작성하는 것 입니다. 우선 DB상에서 날짜를 Date, Timestam

blogshine.tistory.com

여기 참고해서 다 해봤지만 콘솔에는 정상적인 시간이 나와도 db에는 밀리초로 저장이 되었다.

그래서 트리거를 이용해서 update가 일어났을 때의 날짜를 저장해주는 방법을 해보기로 했다.

 

create trigger tg_bookmark_group_edit_date
after update on bookmark_group
for each row
begin
    update bookmark_group set
    bookmark_name = new.bookmark_name,
    sequence = new.sequence,
    make_date = old.make_date,
    edit_date = datetime('now','localtime')
    where id = old.id;
end;

트리거를 만들어서 update가 일어났을 때 변경된 bookmark_name과 sequence를 적용할 수 있게 했고 edit_date를 현재시간을 넣어줬다. 여기서 where 조건이 없으면 모든 레코드가 일괄 변경됨 !!

 

String sql = "update bookmark_group set bookmark_name=?, sequence=?"
					+ " where id=?";
			preparedStatement = connection.prepareStatement(sql);
			preparedStatement.setString(1, name);
			preparedStatement.setInt(2, order);
			preparedStatement.setInt(3, id);

			preparedStatement.executeUpdate();

그리고 쿼리문을 이렇게 작성해줬다.

 

바꾼 시각이 잘 적용되는 것을 확인 ! : ) 신난다