TIP게시판

제목 MySQL update문에서 where 대신 and를 쓰면 어떻게 될까?
글쓴이 배강민 작성시각 2018/05/29 15:17:58
댓글 : 2 추천 : 2 스크랩 : 0 조회수 : 11468   RSS
배강민

UPDATE `table` SET `field` = '가나다' AND 조건;

위를 실행하면 어떻게 될까요?

얼핏보면 정상인듯한 쿼리처럼 착각할 수도 있는데, WHERE를 안쓰고 AND를 쓴겁니다.

에러나고 실행이 안될듯하시죠? 그런데 실행이 되버립니다.

 

그런데

 

해당 테이블의 모든 데이터의 해당 필드가 조건 무시하고 싸그리 다 '0'으로 업데이트되버립니다.

UPDATE `table` SET `field` = 'ABC' AND 조건; ===> 0

UPDATE `table` SET `field` = '34567' AND 조건; ===> 1

문자는 0, 숫자는 1이 되는듯합니다.

모든 버젼의 버그(?)인지는 모르겠으나 5.5 ~ 5.7에서는 발생하는것으로 확인했습니다.

strict_mode를 켜면 실행이 안되고 에러를 뱉을듯도 하지만 이는 테스트해보지 못했고요.

 

굉장히 무서운 오류 쿼리이므로 역시 update, delete는 항상 조심조심~

해당 오류도 관련 문서를 찾아보려했지만 구글링 검색어를 만들어내지 못하겠다는.ㅋ

 다음글 PHP Socket, Socket.io, Multi P...
 이전글 textarea 조작 val() vs. text()

댓글

곰멍 / 2018/05/29 15:54:40 / 추천 0

좋은 정보 감사합니다~

조심해야되겠네요...

한대승(불의회상) / 2018/05/29 16:37:56 / 추천 0

버그 아닙니다.

SQL문작성이 잘못된거죠.

heidisql 같은 클라이언트인 경우 where 문이 누락되면 테이블 전체 데이터가 수정된다는 경고 확인 메시지창을 띄운후 수락할 경우만 업데이트를 진행 합니다.

DB update, delete 프로그래밍 하실때 항상 주의 하셔야 합니다.