반응형
PostgreSQL INSERT ON CONCLIVENT UPDATE(업서트) 제외된 모든 값 사용
행을 뒤집을 때(Postgre)SQL > = 9.5)에서 가능한 INSERT를 가능한 UPDATE와 정확히 동일하게 하려면 다음과 같이 쓸 수 있습니다.
INSERT INTO tablename (id, username, password, level, email)
VALUES (1, 'John', 'qwerty', 5, 'john@mail.com')
ON CONFLICT (id) DO UPDATE SET
id=EXCLUDED.id, username=EXCLUDED.username,
password=EXCLUDED.password, level=EXCLUDED.level,email=EXCLUDED.email
더 빠른 길이 있나요?EXCLUDE 값을 모두 사용합니다.
SQLite에서 저는 다음을 수행했습니다.
INSERT OR REPLACE INTO tablename (id, user, password, level, email)
VALUES (1, 'John', 'qwerty', 5, 'john@mail.com')
Postgres는 다음과 같은 기능을 구현하지 않았습니다.INSERT OR REPLACE문서에서(내 문서 강조):
충돌 시 수행할 업데이트 작업의 정확한 세부 정보를 지정하는 DO NOTHING 또는 DO UPDATE 절이 될 수 있습니다.
대체할 수 있는 간단한 방법은 아니지만,ON CONFLICT DO UPDATE에서는 기존 데이터를 기반으로 새 값을 설정할 수 있으므로 보다 일반적으로 적용됩니다.예:
INSERT INTO users (id, level)
VALUES (1, 0)
ON CONFLICT (id) DO UPDATE
SET level = users.level + 1;
언급URL : https://stackoverflow.com/questions/36359440/postgresql-insert-on-conflict-update-upsert-use-all-excluded-values
반응형
'sourcecode' 카테고리의 다른 글
| angular-cli server - API 요청을 다른 서버로 프록시하는 방법은 무엇입니까? (0) | 2023.05.23 |
|---|---|
| 현재 워크시트의 이름을 참조하여 다른 워크시트의 셀을 참조하시겠습니까? (0) | 2023.05.23 |
| ng-class를 사용하여 다중 클래스 추가 (0) | 2023.05.23 |
| 전원 쿼리:그룹화된 값을 연결하려면 어떻게 해야 합니까? (0) | 2023.05.23 |
| 하위 프로세스를 사용하는 방법.파이썬에서 check_output()? (0) | 2023.05.23 |