database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9893 게시물 읽기
No. 9893
postgreSQL에는 duplicate key update 같은 기능을 하는게 있나여?
작성자
김희주(heeju95)
작성일
2017-09-26 13:55
조회수
7,271

 레코드 중복 확인 한다음 없으면 insert를 있으면 update를 할려고 합니다.

구글링을 해보니 duplicate key update라는 기능이 mysql에서는 존재하고

postgresql에서는 존재하지 않는다고 합니다..

혹시 이 비슷한 기능이 뭐가 있는지 아시면 알려주세요 ㅠㅠ

도와주세여 고수 님들..

이 글에 대한 댓글이 총 6건 있습니다.

upsert 구문이 있습니다.

자세한 것은 검색하시고

UK 나 PK가 있어야하는 제약사항이 있습니다.

김주왕(kimjuking)님이 2017-09-26 13:59에 작성한 댓글입니다.

 insert를 하면 글자가 깨지는 현상이 일어납니다 ㅠㅠㅠㅠㅠㅠ; cmd창 언어셋팅이 잘못된걸까요? ㅠㅠ 

김희주(heeju95)님이 2017-09-26 16:19에 작성한 댓글입니다.

쿼리 상에서 그런가요?

update employee

set

emp_nm = N'지현명'

where emp_id = 1;

 

한글 앞에 N붙이고 해보세요.

 

아니면 java에서 그런거면 다른 방법을 알려드릴께요

지현명(gwise)님이 2017-09-26 17:22에 작성한 댓글입니다.

show client_encoding;

인코딩을 확인하세요

김주왕(kimjuking)님이 2017-09-27 08:54에 작성한 댓글입니다.

다음과 같이 하시면 됩니다.

 

1. 일단 테이블을 생성

create table table1(id int, data varchar(20), primary key(id));

 

2. SQL

WITH AAA (id, data) as (

values

(2, 'BBBBBB') <= 이부분에 입력할 값을 지정한다.

),

BBB as

(

update table1 m

set data = nv.data

FROM AAA nv

WHERE m.id = nv.id

RETURNING m.* <= 동일 id가 있으면 이부분이 실행됨

)

INSERT INTO table1 (id, data)

SELECT id, data

FROM AAA

WHERE NOT EXISTS

(SELECT 1 FROM BBB up WHERE up.id = AAA.id) <= 동일 id가 없으면 이부분이 실행됨

 

 

윤진훈(jinyyoon)님이 2017-09-27 16:10에 작성한 댓글입니다.

윗 쿼리는 9.4 이하 버전에서 사용하던 쿼리입니다. 해당 쿼리는 테이블 전체를 잠그지 않는함 자료 무결성이 깨질 가능성이 있습니다.

9.5 이상 버전을 사용한다면, insert ... on conflict 구문을 사용하세요.

김상기(ioseph)님이 2017-09-28 13:08에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9896postgresql disk i/o 원리,과정을 알고 싶습니다. [1]
도와주세요
2017-09-30
6552
9895nul 관련 질문 [5]
postgres
2017-09-29
6565
9894쿼리문 중에 질문이 있습니다.. [5]
뉴비뉴비
2017-09-26
6694
9893postgreSQL에는 duplicate key update 같은 기능을 하는게 있나여? [6]
김희주
2017-09-26
7271
9892타입 변환 질문이있습니다. [1]
초보보
2017-09-22
6537
9891postgreSQL에서는 create database if not exists 같은게 없나요? [1]
김희주
2017-09-21
6834
9890MS-SQL 쿼리문중에 [1]
허접입니다
2017-09-20
6622
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다