> 데이터 베이스 > MySQL 튜토리얼 > SQLite에서 MySQL의 INSERT ON DUPLICATE KEY UPDATE를 시뮬레이션하는 방법은 무엇입니까?

SQLite에서 MySQL의 INSERT ON DUPLICATE KEY UPDATE를 시뮬레이션하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-15 14:01:44
원래의
255명이 탐색했습니다.

How to Simulate MySQL's INSERT ON DUPLICATE KEY UPDATE in SQLite?

SQLite에서 중복 키 업데이트에 대한 MySQL INSERT 시뮬레이션: 전체 가이드

관계형 데이터베이스는 레코드가 이미 있으면 업데이트해야 하고, 레코드가 없으면 새 레코드를 삽입해야 하는 경우가 많습니다. MySQL에서는 삽입과 업데이트 작업을 결합하는 편리한 방법을 제공하는 INSERT ... ON DUPLICATE KEY UPDATE 구문을 사용하여 이 기능을 구현할 수 있습니다.

그러나 SQLite는 기본적으로 이 구문을 지원하지 않습니다. 따라서 SQLite에서 동일한 효과를 달성하는 다른 방법을 모색해야 합니다.

한 가지 방법은 INSERT 또는 UPDATE 쿼리와 결합된 SELECT를 사용하는 것입니다. 여기에는 먼저 SELECT 쿼리를 실행하여 동일한 고유 키(예: IP 주소)를 가진 레코드가 있는지 확인하는 작업이 포함됩니다. 존재하는 경우 UPDATE 쿼리를 수행하여 적중 열을 증가시킵니다. 존재하지 않는 경우 INSERT 쿼리를 실행하여 새 레코드를 생성합니다.

또는 UPDATE와 INSERT 쿼리를 결합할 수도 있습니다. 여기에서는 특정 IP 주소에 대한 조회수 열을 증가시키려는 UPDATE 쿼리가 먼저 실행됩니다. 성공하면 레코드가 존재하고 작업이 완료됩니다. 레코드가 존재하지 않아 UPDATE가 실패하면 INSERT 쿼리가 실행되어 새 레코드를 생성합니다.

두 방법 모두 관련 열(예: ip)에 고유 제약 조건(또는 기본 키)이 필요합니다.

또 다른 효과적인 해결책은 다음 문장을 사용하는 것입니다.

<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip = $ip;</code>
로그인 후 복사

이 방법에는 INSERT OR IGNORE 문을 사용하여 새 레코드를 삽입하려고 시도하는 방법이 포함됩니다. IGNORE 절은 레코드가 이미 존재하는 경우 오류가 발생하는 것을 방지합니다. 후속 UPDATE 문은 특정 IP 주소에 대한 적중 열을 증가시키려고 시도합니다. UPDATE가 성공하면 레코드가 성공적으로 업데이트되었음을 ​​의미합니다. 실패하면 레코드가 존재하지 않고 INSERT 문에서 생성되었음을 의미합니다. 정확한 IP 주소 일치를 보장하기 위해 LIKE=으로 변경했습니다.

위 내용은 SQLite에서 MySQL의 INSERT ON DUPLICATE KEY UPDATE를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿