INSERT ON CONFLICT
ON CONFLICT 는 PostgreSQL 9.5이상의 버전에서 사용이 가능합니다. 더 낮은 버전을 사용하고 있다면, 사용이 어렵습니다.
INSERT ON CONFLICT 문은 새롭게 INSERT될 데이터가 이미 테이블에 존재하는 경우, 거기에 대한 제어를 할 수 있게 합니다.
INSERT ON CONFLICT
INSERT ON CONFLICT 문은 아래와 같이 사용됩니다.
xxxxxxxxxxINSERT INTO table_name(column_list) VALUES(value_list)ON CONFLICT target action;
DML의 INSERT 문에 ON CONFLICT target action 이 붙는 형식으로 이루어집니다.
target & action
target
- column_name: 속성명
- ON CONSTRAINT constraint_name: 제약조건 이름(UNIQUE constraint의 이름)
- WHERE predicate:
WHERE절
action
- DO NOTHING
- DO UPDATE SET column_1 = value_1, .. WHERE condition: 테이블의 몇몇 필드를 수정
예시 - target: column_name
xxxxxxxxxxINSERT INTO customers (name, email)VALUES('Microsoft','hotline@microsoft.com')ON CONFLICT (name)DO NOTHING;
예시 - target: ON CONSTRAINT
xxxxxxxxxxINSERT INTO customers (NAME, email)VALUES('Microsoft','hotline@microsoft.com')ON CONFLICT ON CONSTRAINT customers_name_keyDO NOTHING;
예시 - action: DO UPDATE SET
INSERT INTO customers (name, email)VALUES('Microsoft','hotline@microsoft.com')ON CONFLICT (name)DOUPDATESET email = EXCLUDED.email || ';' || customers.email;
'DB > postgresql' 카테고리의 다른 글
| PostgreSQL EXISTS & IN (0) | 2020.04.10 |
|---|---|
| pg_hba.conf 설정하기 (0) | 2019.01.15 |