2016-11-03 5 views
0

H2 데이터베이스의 MERGE 명령을 사용하고 있는데 그 중 documentation의 일부를 이해하지 못합니다. 문제가되는 부분은 -H2 데이터베이스 병합

테이블에 자동 증가 된 키 또는 식별 열이 포함되어 있고 행이 업데이트 된 경우 생성 된 키는 0으로 설정됩니다. 그렇지 않으면 새 키

로 설정되어 이해하려고 다음과 같은 SQL 문을 실행이 표는 위의 문 다음과 같습니다

CREATE TABLE h2_test (id INTEGER PRIMARY KEY AUTO_INCREMENT, int INTEGER) 
INSERT INTO h2_test (int) VALUES (42) 
INSERT INTO h2_test (int) VALUES (43) 
INSERT INTO h2_test (int) VALUES (44) 
MERGE INTO h2_test (int) KEY(int) VALUES (45) 
MERGE INTO h2_test (id, int) VALUES (5, 46) 
MERGE INTO h2_test (id, int) VALUES (2, 47) 
INSERT INTO h2_test (int) VALUES (48) 

그래서
+---------+ 
| ID INT | 
+---------+ 
| 1 42 | 
| 2 47 | 
| 3 44 | 
| 4 45 | 
| 5 46 | 
| 6 48 | 
+---------+ 

없음 중요한 키가 MERGE에 포함되는지 여부에 관계없이 명령문이 레코드가 추가되면 증가합니다. &은 이미 존재하는 값을 제거합니다. 명령문이 갱신되는 레코드 결과를 얻는 경우에 대비하십시오. 누군가가 문서의 인용 부분은 예상대로 작동

답변

0

을 표현하려고 무엇을 밝혀 수있는 경우

그것은 좋은 것입니다. 7 개의 INSERT/MERGE 문으로 6 개의 새로운 레코드와 하나의 업데이트가 생성됩니다. 마지막 MERGE 문은 두 번째 INSERT 문 (값 43)에 의해 만들어진 레코드를 업데이트합니다. 일반적으로 MERGE의 KEY 부분을 사용하여 기본이 아닌 KEY로 지정된 행이 있는지 확인합니다. 귀하의 문의에서 45는 아직 존재하지 않습니다. 다른 열을 추가 한 다음 기존 "int"열 값을 쿼리하여 기존 행에 대한 의미있는 업데이트를 확인합니다.