본문 바로가기
공부/PostgreSQL

[38] PostgreSQL – Upsert

by 혼밥맨 2023. 4. 22.
반응형

[38] PostgreSQL –  Upsert

 

UPSERT 문은 DML 작성자가 행을 삽입하거나 행이 이미 존재하는 경우 대신 기존 행을 업데이트할 있는 DBMS 기능입니다. 그래서 작업을 UPSERT(단순히 업데이트와 삽입의 혼합)라고 합니다. UPSERT 기능을 달성하기 위해 PostgreSQL INSERT ON CONFLICT 문을 사용합니다.

먼저 아래 명령을 사용하여 예제를 수행하는 샘플 테이블을 만듭니다.

그런 다음 다음과 같이 직원 테이블에 데이터를 삽입합니다.

예시01:

아래 쿼리는 employee_id 6(해당 직원이 있는 경우) 이름을 Y. Singh에서 Yuvraj Singh으로 변경하거나 해당 직원이 없는 경우 레코드를 삽입하는 사용됩니다.

테이블의 변경 사항을 확인하기 위해 다음 쿼리를 사용합니다.

결과 01:

예제에서는 사원이 존재하는 경우 ID 6 사원의 이름을 업데이트하기 위해 INSERT문의 조치로 UPDATE절을 사용하려고 했습니다.

 

예시 02:

아래 쿼리는 직원 ID 18 직원을 'W'라는 이름으로 삽입하는 사용됩니다. Sundar' 관리자 ID '6'(레코드가 없는 경우)하지만 해당 레코드가 이미 테이블에 있는 경우 아무 작업도 수행하지 않습니다.

테이블의 변경 사항을 확인하기 위해 다음 쿼리를 사용합니다.

결과 02:

예에서는 직원 ID 18 직원이 이미 존재하고 아무 작업도 수행하지 않기 때문에 테이블에서 변경된 사항이 없습니다.

 

예시 03:

아래 쿼리는 직원 ID 21 직원을 'W'라는 이름으로 삽입하는 사용됩니다. Sundar' 관리자 ID '6'(레코드가 없는 경우)하지만 해당 레코드가 이미 테이블에 있는 경우 아무 작업도 수행하지 않습니다.

테이블의 변경 사항을 확인하기 위해 다음 쿼리를 사용합니다.

결과 03:

예에서는 직원 ID 21 테이블에 기존 직원이 없으므로 레코드가 테이블에 삽입되었습니다.

반응형

'공부 > PostgreSQL' 카테고리의 다른 글

[40] - PostgreSQL – COALESCE  (0) 2023.04.22
[39] PostgreSQL – CASE  (0) 2023.04.22
[37] PostgreSQL – 행 삭제DELETE  (0) 2023.04.22
[36] PostgreSQL – 업데이트 UPDATE  (0) 2023.04.22
[35] PostgreSQL – 여러 행 여러 값 삽입  (0) 2023.04.22

댓글