SQLite“INSERT OR REPLACE INTO”vs.“UPDATE… WHERE”
INSERT OR REPLACE INTO names (id, name) VALUES (1, "John")
전에 SQL에서 사용 된 구문을 본 적이 없으며 왜 .NET보다 나은지 궁금합니다 UPDATE names SET name = "John" WHERE id = 1
. 하나를 다른 것보다 사용하는 합당한 이유가 있습니까? 이 구문은 SQLite에만 해당됩니까?
행이 존재하지 않으면 UPDATE는 아무 작업도 수행하지 않습니다.
행이 존재하지 않으면 INSERT OR REPLACE가 삽입하거나 존재하는 경우 값을 대체합니다.
저는 현재 그러한 성명서에 대해 작업 중이며주의해야 할 또 다른 사실을 알아 냈습니다. INSERT OR REPLACE는 성명서에 제공되지 않은 모든 값을 대체합니다. 예를 들어 테이블에 값을 제공하지 않은 "성"열이 포함 된 경우 INSERT OR REPLACE는 가능한 경우 (제약 조건에서 허용) "성"을 무효화하거나 실패합니다.
REPLACE INTO table(column_list) VALUES(value_list);
더 짧은 형태의
INSERT OR REPLACE INTO table(column_list) VALUES(value_list);
REPLACE가 올바르게 실행 되려면 테이블 구조에 단순 기본 키든 고유 인덱스 든 고유 한 행이 있어야합니다.
REPLACE는 레코드를 삭제 한 다음 INSERT하고 설정 한 경우 INSERT 트리거가 실행되도록합니다. INSERT에 대한 트리거가있는 경우 문제가 발생할 수 있습니다.
속도를 확인하지 않고 ..
INSERT OR IGNORE INTO table (column_list) VALUES(value_list);
뒤에
UPDATE table SET field=value,field2=value WHERE uniqueid='uniquevalue'
이 방법을 사용하면 트리거없이 교체 할 수 있습니다.
삽입 또는 바꾸기 쿼리는 id = 1이 아직없는 경우 새 레코드를 삽입합니다.
업데이트 쿼리는 영역이 존재하는 경우 id = 1 만 oudate하고 존재하지 않는 경우 새 레코드를 생성하지 않습니다.
참고 URL : https://stackoverflow.com/questions/2251699/sqlite-insert-or-replace-into-vs-update-where
'program tip' 카테고리의 다른 글
SQL Server에서 시간을 어떻게 비교할 수 있습니까? (0) | 2020.12.11 |
---|---|
int 대신 string :: size_type (0) | 2020.12.11 |
printf ()를 사용하는 소수점 두 자리 (0) | 2020.12.11 |
Ruby on Rails에서 has_many 항목 수를 확인합니다. (0) | 2020.12.11 |
ajax 게시물에 대해 수동으로 MVC 3 클라이언트 측 유효성 검사 호출 (0) | 2020.12.11 |