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 중국어 웹사이트의 기타 관련 기사를 참조하세요!