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

오토세이브 on duplicate key update 채택완료

LovelyCaT 7년 전 조회 2,169

현재 그누보드가 아닌 일반 게시판을 php로 개발중입니다.

임시저장기능을 만들기 위해 그누보드를 참고하여 on duplicate key update을 이용해 만들고 있는데,

autosave 테이블에 id, table_name(UNI), user_id(UNI), title(UNI), contents, update_dt

이렇게 만들었습니다.

 

제가 의도하는 바는 동일한 table_name, user_id, title 일때는 contents가 update가 되고

table_name, user_id가 같고 title이 다르면 추가로 insert를 시키고 싶습니다.

 

$obj 객체에는 tabile_name, user_id, title, contents, update_dt

 

INSERT INTO autosave (table_name, user_id, title, contents, udt_dt) VALUES ('".$obj->table_name."', '".$obj->user_id."', '".$obj->title."', '".$obj->contents."', '".$obj->update_dt."')                                   ON DUPLICATE KEY UPDATE title='".$obj->title."', contents='".$obj->contents."', udt_dt='".$obj->update_dt."'

 

이렇게 했는데 다른 title인데도 계속 한 행만 update 되고 있어서 여쭙니다 ㅠ 제가 기능을 잘못 이해하고 있는건가요..?

제가 의도한 대로 하려면 어떻게 해야 할까요?

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

답변 1개

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

INSERT INTO autosave (table_name, user_id, title, contents, udt_dt) VALUES ('".$obj->table_name."', '".$obj->user_id."', '".$obj->title."', '".$obj->contents."', '".$obj->update_dt."')                                   ON DUPLICATE KEY UPDATE  contents='".$obj->contents."', udt_dt='".$obj->update_dt."'

 

키를 제외한 나머지만 뒤로 들어갑니다.

 

참고로 뒤쪽에 타이틀까지 썻으니까 table_name, user_id 만 키로 생각하고,  항상 키가 같으니까 - table_name, user_id 는 같으니까요 - 한 행에만 업데이트 하는 거죠 ^^

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

답변에 대한 댓글 6개

L
LovelyCaT
7년 전
@나시
이렇게 해도 그냥 동일한 행에 contents랑 udt_dt만 update가 됩니다 ㅠㅠ
table_name이랑 user_id는 같고 title이 같은데 왜 update가 되는걸까요..ㅜㅜ
나시
7년 전
다시보니 id도 있네요?
id를 굳이 하셔야 할 이유가 없다면 id 를 빼주시거나 id 까지 포함해서 쿼리를 작성해야 되야 되지 싶은데요 ^^
나시
7년 전
혹시 그래도 안된다면 autosave 테이블 구성을 보여주세요 ^^
L
LovelyCaT
7년 전
id mediumint(8) unsigned NO PRI
table_name varchar(20) utf8_general_ci NO UNI
user_id mediumint(8) NO UNI
title varchar(200) utf8_general_ci NO UNI
contents blob NO
udt_dt int(10) unsigned YES

이렇게 되어있어요!
오토세이브 삭제도 있어서 id값은 있어야 합니다 ㅜㅜ
나시
7년 전
키 구성도 보여주시면 좋은데 키 없이 저렇게만 구성하셨나요?
UNI 는 UNIQUE INDEX 를 뜻하는거라 따로 키로 구성되었다는 뜻은 아닌줄 압니다.
id 를 제외한 나머지 세가지로 구성된 KEY값이 구성되어있는지 확인하셔야 되겠네요
L
LovelyCaT
7년 전
아... 키 구성을 따로 또 해주어야 하는 군요..ㅠㅠ 그걸 몰랐네요.. 알아보고 적용해볼께요 감사합니다!

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

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

로그인