2026, 새로운 도약을 시작합니다.

insert 처리 질문드립니다. 채택완료

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

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

답변 2개

채택된 답변
+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를 잘 활용해야 한다는 것입니다.

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

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

로그인
🐛 버그신고