이전 목록 다음
채택완료

insert 처리 질문드립니다.

그누보드 각종 모듈에서 일단 insert를 하고 오류가 발생하면 해당행이 있는것으로 간주하고 update를 하도록 처리되고 있는 로직을 종종 발견하게 되는데, 이게 select문으로 확인하고 update나 insert하는것보다 더 효율적인 방법인가요?

 

예시로는 bbs/visit_insert.inc.php 32라인입니다.3554457875_1641960464.5376.png

답변 2개 / 댓글 4개

채택된 답변
+20 포인트

상단에서 insert 한후 result 에 insert 결과 값이 들어가게 되니까

별로 select 하지 않아도 존재하면 (입력이 정상적으로 되었다면) 입력하게 됩니다

 

쿼리를 두번 날리지 않아도 되니까 부하가 조금 줄어들게됩니다

 

또한 select 후 insert 를 하면 전 단계 에서 insert 가 오류가 발생한건지 안한건지를 알수가 없기 때문에 무결성 문제도 발생합니다 따라서 위처럼 하는게 옳은 방법이라고 볼수있습니다

답변에 대한 댓글 1개

INSERT ... ON DUPLICATE KEY UPDATE Statement

구문을 참고하세요.

 

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

답변에 대한 댓글 3개

감사합니다
DB쪽에서 데이터가 존재하는지 검사해서 입력/수정을 결정하는 방법이 있었네요
좀 더 살펴보니 작성해주신 구문도 일단 insert 시도 한 뒤 중복 발생 시 update 하는 기능이고 쿼리를 한번 날리냐 두번 날리냐 차이인거 같은데 올바르게 이해한걸까요?
맞습니다
query 한 번으로 해결하는 것이죠.
주의할 점은 unique key를 잘 활용해야 한다는 것입니다.

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