데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
오픈마켓 (옥션, 지마켓등)에 api연동하여 상품관리를 하고 있습니다.
오픈마켓에 상품등록하면 테이블에 해당 상품정보를 입력하는데
중복체크를 물론 해두었습니다. 기존에 있는 상품이면 등록 안되고 디비에 인서트도 안시키게끔 해두었는데..
상품등록시에 한 상품코드가 여러개 있습니다.
인서트 시간을 보면 같은 시간에 여러개 들어가는 경우가 있는데요
이런 경우가 있을수가 있나요?
Comment 2
-
쓸만한게없네(윤선식)
2013.04.16 13:18
-
카즈야마(이정우)
2013.04.16 15:08
안녕하세요.
혹여 예~전에 제가 했던 실수일까해서 공유 드립니다.
컬럼에 날짜 컬럼을 datetime으로 잡고
초까지의 중복체크를하여 데이터를 insert 시켰었는데요
datetime의 밀리초 단위에 0,3,7 만 들어가는걸 확인할수있습니다.
(그래서 혹여 datetime 에 PK를 거시는경우 밀리초 단위에서 PK 제약에 걸리는 경우가 있습니다.)
datetime2 사용이 가능하다면 datetime2를 사용하시고
선식님 말씀대로 제약조건 + 중복체크에 대한 로직을 한번 더 검토해주심이 좋을 듯 싶습니다.
우선 중복체크를 어떻게 하셨는지 먼저 보셔야 하구요,
제일 좋은 것은 Table에 Unique 제약조건을 걸어 두는 것입니다.
최소한 DBMS 에 제약조건이 있으면 여러 번 INSERT 되지는 않을 듯 하네요.
제가 보기엔 Application 에서 여러 번 Insert 하는 듯 하고요,
중복 발생 시 Error 처리를 하셔서 확인하시는 것이 좋을 것 같습니다.