항목이 없으면 만들고, 없으면 업데이트하시겠습니까?
그렇게 짧게 말하면 좀 이상해, 헤헤.
어쨌든, 제가 원하는 것은 기본적으로 테이블의 항목이 있으면 업데이트하고, 그렇지 않으면 동일한 데이터로 채우는 새 항목을 만드는 것입니다.
그게 쉽다는 건 알지만, 제가 MySQL을 얼마나 사용했는지는 비교적 생소합니다 :P
많은 개발자가 여전히 쿼리를 실행하여 테이블에 필드가 있는지 확인한 다음 첫 번째 쿼리 결과에 따라 삽입 또는 업데이트 쿼리를 실행합니다.ON DUPLICATE KEY 구문을 사용해 보십시오. 이 구문은 2개의 쿼리를 실행하는 것보다 훨씬 빠르고 좋습니다.자세한 내용은 여기에서 확인할 수 있습니다.
중복 키 업데이트 c=9에서 표 (a,b,c) 값 (4,5,6)에 삽입;
c에 대해 동일한 값을 유지하려면 동일한 값으로 업데이트할 수 있습니다.
중복 키 업데이트 c=6에서 표 (a,b,c) 값 (4,5,6)에 삽입;
'replace'와 'on duplicate key'의 차이:
바꾸기: 삽입 또는 삭제 및 삽입
중복 키: 삽입 또는 업데이트 시
테이블에 기본 키 또는 고유 키가 없으면 대체가 의미가 없습니다.
사용할 수도 있습니다.VALUES
실제 값을 두 번 지정할 필요가 없도록 하는 기능입니다.예를 들어 대신에
INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;
사용할 수 있습니다.
INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);
어디에VALUES(c)
앞에서 지정한 값(6)으로 평가합니다.
'바꾸기' 사용:
REPLACE INTO table SET id = 42, foo = 'bar';
MySQL 설명서에서 자세히 보기
다른 사람들이 말했듯이,REPLACE
가는 길입니다.하지만 그것은 실제로 하기 때문에 사용하는 것에 주의하세요.DELETE
그리고.INSERT
테이블 위에.이것은 대부분 괜찮지만, 만약 당신이 다음과 같은 제약이 있는 외부 키를 가지고 있다면.ON DELETE CASCADE
그것은 몇 가지 큰 문제를 일으킬 수 있습니다.
MySQL 매뉴얼에서 REPLACE를 찾습니다.
REPLACE는 테이블의 이전 행이 기본 키 또는 고유 인덱스에 대한 새 행과 동일한 값을 갖는 경우 새 행을 삽입하기 전에 이전 행이 삭제된다는 점을 제외하고 INSERT와 동일하게 작동합니다.섹션 12.2.5, "Insert Syntax"를 참조하십시오.
REPLACE는 SQL 표준에 대한 MySQL 확장입니다.삽입하거나 삭제 및 삽입합니다.표준 SQL에 대한 다른 MySQL 확장(삽입 또는 업데이트)은 섹션 12.2.5.3, "INSERT..."를 참조하십시오.키 업데이트 구문이 중복될 때".
다음과 같은 INSERT 쿼리가 있는 경우
INSERT INTO table (id, field1, field2) VALUES (1, 23, 24)
다음은 실행해야 하는 REPLACE 쿼리입니다.
REPLACE INTO table (id, field1, field2) VALUES (1, 23, 24)
언급URL : https://stackoverflow.com/questions/696190/create-if-an-entry-if-it-doesnt-exist-otherwise-update
'programing' 카테고리의 다른 글
gitignore에서 선행 슬래시를 사용하는 경우 (0) | 2023.09.02 |
---|---|
열 머리글을 사용하여 SQL Server에서 Excel로 내보내시겠습니까? (0) | 2023.09.02 |
MySQL 하위 문자열 빈 값 반환 (0) | 2023.09.02 |
Express res.send 파일 던지기 금지 오류 (0) | 2023.09.02 |
Junit에서 @AutoWired 주석과 함께 @InjectMocks를 사용하는 방법 (0) | 2023.09.02 |