MySQL에서 동일한 row가 없을때만 insert를 하는 방법이 있나요?
글쓴이: superkkt / 작성시간: 금, 2007/09/21 - 10:16오전
3개의 필드를 가지고 있는 테이블이 있습니다. 필드의 크기가 커서 unique key로는 설정하지 못하는 상태이구요. 3개의 필드값이 완전히 일치하는 row가 있을때는 insert를 안해서 중복되는 row가 없도록 하고 싶습니다. 지금까지는 이런 경우에 select를 먼저해서 결과가 없으면 insert를 하는 방법을 사용했는데요.. 지금 상황이 다중 접속이 있을수가 있어서 이 두 쿼리를 atomic(?)하게 처리를 해야 합니다. MS-SQL에서는 if/else 문으로 제가 원하는게 가능하던데 MySQL에서는 방법을 못찾겠네요.
Forums:
문법이 있습니다.
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
이 방법은 unique key나
이 방법은 unique key나 primary key가 걸려 있어서 여기서 중복이 발생할때만 가능한것 아닌가요?
지금 제가 사용하는 필드들이 사이즈가 커서 key를 걸지 못합니다.
그래서 제가 생각하는 방법을 pseudo code로 설명하자면..
이런게 MS-SQL에서는 된다고 하더군요.
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
key가 커서 문제라면,
key가 커서 문제라면, key에 대해서 hash()하여 컬럼을 만들고, 그 컬럼에 key 를 거는 것은 어떨까요?
hash 함수는 지금은 권장되지 않는 MD5, 또는 sha* 시리즈 정도라면 말입니다.
table lock 을
table lock 을 참조하시면 쉽게 해결이 되실것 같습니다.
( atomicity 를 해결하는 가장 일반적인 방법이기도 하지요. )
Neogeo - Future is Now.
Neogeo - Future is Now.
댓글 달기