[SQL] SQLite는 INSERT - ON DUPLICATE KEY UPDATE (UPSERT)
SQLSQLite는 INSERT - ON DUPLICATE KEY UPDATE (UPSERT)
MySQL은이 같은있다 :
INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;
이 쿼리를 실행하지 않고도 같은 효과를 실현하려 어떤 방법이 있는지 지금까지 내가 SQLite는 존재하지 않는이 기능을 알고, 내가 알고 싶은 것입니다. 이것이 가능하지 않은 경우에도, 당신이 선호한다 :
해결법
-
==============================
1.3.24.0 SQLite는 또한 upsert를 지원하기 때문에, 이제 당신은 단순히 다음을 쓸 수 있습니다
3.24.0 SQLite는 또한 upsert를 지원하기 때문에, 이제 당신은 단순히 다음을 쓸 수 있습니다
INSERT INTO visits (ip, hits) VALUES ('127.0.0.1', 1) ON CONFLICT(ip) DO UPDATE SET hits = hits + 1;
-
==============================
2.
INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;
이것은 UNIQUE (또는 PRIMARY KEY) 제약 조건을 가지고있는 "IP"열이 필요합니다.
편집 : 또 다른 훌륭한 솔루션 : https://stackoverflow.com/a/4330694/89771.
-
==============================
3.(UPDATE가 실패 할 경우 + INSERT) 나는 UPDATE를 원합니다. 적은 코드 = 적은 버그.
(UPDATE가 실패 할 경우 + INSERT) 나는 UPDATE를 원합니다. 적은 코드 = 적은 버그.
-
==============================
4.현재의 대답은 (당신이 또는 사용 여부를 경우에 따라) sqlite가 또는 MySQL의에서 작동합니다. 당신은 크로스 DBMS 호환성을 원한다면, 다음이 할 것입니다 ...
현재의 대답은 (당신이 또는 사용 여부를 경우에 따라) sqlite가 또는 MySQL의에서 작동합니다. 당신은 크로스 DBMS 호환성을 원한다면, 다음이 할 것입니다 ...
REPLACE INTO `visits` (ip, value) VALUES ($ip, 0);
-
==============================
5.이 단일 값 (방문 횟수)를 저장하는 하나의 키 (IP 주소)이기 때문에이에 대한 memcached를 사용해야합니다. 당신은 더 "경쟁"조건이없는 보장하기 위해 원자 증가 기능을 사용할 수 있습니다.
이 단일 값 (방문 횟수)를 저장하는 하나의 키 (IP 주소)이기 때문에이에 대한 memcached를 사용해야합니다. 당신은 더 "경쟁"조건이없는 보장하기 위해 원자 증가 기능을 사용할 수 있습니다.
그것은 빠른 MySQL을보다 더 그리고 MySQL은 다른 일에 집중할 수 있도록 부하를 저장합니다.
from https://stackoverflow.com/questions/2717590/sqlite-insert-on-duplicate-key-update-upsert by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL Server의 날짜에 BIGINT (UNIX 타임 스탬프)를 변환 할 수 있습니까? (0) | 2020.03.18 |
---|---|
[SQL] 여러 값을 하나의 INSERT 대 여러 INSERT 문 (0) | 2020.03.18 |
[SQL] C # SQL 서버 - 저장 프로 시저 목록을 전달 (0) | 2020.03.18 |
[SQL] SQL - 하나 개의 쿼리의 업데이트는 여러 레코드 (0) | 2020.03.18 |
[SQL] 어떻게 MySQL의 과정 ORDER BY와 LIMIT 쿼리에합니까? (0) | 2020.03.18 |