오토세이브 on duplicate key update

오토세이브 on duplicate key update

QA

오토세이브 on duplicate key update

답변 1

본문

현재 그누보드가 아닌 일반 게시판을 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

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 는 같으니까요 - 한 행에만 업데이트 하는 거죠 ^^

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값은 있어야 합니다 ㅜㅜ

키 구성도 보여주시면 좋은데 키 없이 저렇게만 구성하셨나요?
UNI 는 UNIQUE INDEX 를 뜻하는거라 따로 키로 구성되었다는 뜻은 아닌줄 압니다.
id 를 제외한 나머지 세가지로 구성된 KEY값이 구성되어있는지 확인하셔야 되겠네요

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,284
© SIRSOFT
현재 페이지 제일 처음으로