Mysql insert on duplicate key update 관련 문의입니다. 0 2 2,250

by captain [2016.01.13 17:18:30]


안녕하세요.

 

MySQL의 insert on duplicate key update 를 사용하는 도중에 

문의사항이 있어 메일 드립니다.

 

해당 기능은 key 값이 중복되는 건에 대해서 없으면 insert 있으면 update 하는데요.

혹시 update시에 값이 기존값과 변경된 경우에만 update를 할수 있을까요?

 

구체적으로는 필드가 5개라면, 5개중 하나라도 기존 값과 변경된 경우에만 update 할수 있는지 문의드립니다.

지금은 무조건 update 치는 것으로 되어 있습니다. 

이래서 modify_date가 값이 변경되지도 않은 row에 대해서도 변경이 됩니다.

물론 select를 먼저하여 구분할수도 있겠지만, 한번에 쿼리로 가능하면 이 쿼리를 사용하고 싶어서요.

 

감사합니다.

        INSERT INTO table
        (
        fielda, fieldb, fieldc, fieldd, fielde, insert_date
        )
        VALUES
        (
        #{fielda}, #{fieldb}, #{fieldc}, #{fieldd}, #{fielde}, now()
        )
        ON DUPLICATE KEY
        UPDATE
            fielda = #{fielda},
            fieldb = #{fieldb},
            fieldc = #{fieldc},
            fieldd= #{fieldd},
            fielde = #{fielde},

            modify_date = now()

fielda~e 값이 기존값과 변경된 경우에만 update를 수행하고 싶음. 

by 아발란체 [2016.01.13 17:31:14]

 insert on duplicate key update 구문은 말씀하신 목적 밖에 없습니다.

그렇기 때문에 없는 방법을 어렵게 쿼리를 짜는 것보다

말씀하신 것처럼 조회 한번 더 하는 것이 명확하고 직관적일 것 같습니다.


by captain [2016.01.14 10:09:51]

답변 감사드립니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입