프로그램관련 기타

[my-sql]update 구문 예제

차돌이라네 2017. 11. 13. 17:46


#UPDATE 시 ROW 유무 확인 방식


(1) UPDATE -> row개수가 0 일 경우 INSERT


UPDATE member_game_week SET point = _w_point0,  win = _w_win0, lose = _w_lose0, update_date = SYSDATE() WHERE fid = _fid0 AND week = _week;

IF(FOUND_ROWS()  = 0) THEN

INSERT member_game_week VALUES (null, _week, _fid0, _w_point0, _w_win0, _w_lose0, SYSDATE());

END IF; 



(2) SELECT 하여 row 가 있는지 확인 -> 있으면 UPDATE / 없으면 INSERT


SELECT SQL_CALC_FOUND_ROWS * FROM member_game_week NOLOCK WHERE fid = _fid0 AND week = _week;

IF(FOUND_ROWS()  = 0) THEN

INSERT member_game_week VALUES (null, _week, _fid0, _w_point0, _w_win0, _w_lose0, SYSDATE());

ELSE

UPDATE member_game_week SET point = _w_point0,  win = _w_win0, lose = _w_lose0, update_date = SYSDATE() WHERE fid = _fid0 AND week = _week LIMIT 1;

END IF;





#기타

-select 문은 기본적으로 락이 발생 하지 않는다.

-update, insert 문 락이 발생 할 수 있다.

-insert 와 undate 중 insert 의 속도가 빠르다.