테스트 사이트 - 개발 중인 베타 버전입니다

DB관련 채택완료

아파팡 10년 전 조회 3,412

set_1 테이블에 a1,a2,a3 칼럼이 있는데

특정 페이지에서 새로고침하면 set_1 테이블에 계속 insert 됩니다.

근데 문제가..insert 만 되고 update 나 delet 는 저의 한계때문에 만들수가 없었습니다..

 

새로고침 하여 받아오는 값과 db에있는 값이 (칼럼이 하나라도 맞으면) 같다면 update

그리고 db에 값이 없으면 insert, 마지막으로 db에 값은 있는데 새로고침 하여 받아오는 값이 없다면

db에있는 값을 delet 할 수 있을까요?..

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
p
10년 전

기본적으로 duplicate key 라던지 for update 같은걸 사용할려면

transaction이 제공 되어야 합니다 (lock 기능의 필요성 때문에)

따라서 위의 기능을 사용할려면 엔진을 innoDB 로 사용해야 하기에 말씀드린거구요

 

http://powerhan.tistory.com/175">http://powerhan.tistory.com/175 

 

참조하세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

아파팡
10년 전
Mysql 클라이언트버젼이 5.0 이더라구요php는5.5
카페24사용중이구요 ㅜ 혹시나싶어 테이블 추가하고 엔진목록을보는데 innodb 는 없더라구요 ㅜㅜ

댓글을 작성하려면 로그인이 필요합니다.

p
10년 전

일단 DELETE 는 추후로 생각하고..

SELECT FOR UPDATE 를 해보세요.

https://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html 

(아.. innoDB 사용하시는거 맞으시죠?)


수정합니다.

duplicate key 가 우선이겠군요..

https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

아파팡
10년 전
;ㅅ;...mysql쓰고있습니다 ㅜㅜ 미리 적어놨어야했는데 죄송해요..
p
port443
10년 전
;;; mysql 인거 알고 답변드린거구요..
mysql 안에 엔진이 나뉩니다, MyISAM 하고 innoDB 로요 ;;
아파팡
10년 전
아~~ 그렇군요!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인