본문 바로가기

카테고리 없음

Postgresql - there is no unique or exclusion constraint matching the ON CONFLICT specification

728x90
반응형

postgresql 사용하다

 

INSERT INTO TB_CD(CTGRY, CD, LVL, CD_NM, CD_EXPLN, RSVT1, RSVT2, RSVT3, CD_SEQ, STTS_CD, SITE_SN)
		VALUES(#{ctgry}, #{cd}, #{lvl}::INTEGER, #{cdNm}, #{cdExpln}, #{rsvt1}, #{rsvt2}, #{rsvt3}, #{cdSeq}, #{sttsCd}, #{siteSn})
		ON CONFLICT(CD) DO UPDATE 
	 	SET	CD_NM 		= #{cdNm},
			CD_EXPLN 	= #{cdExpln}, 
			RSVT1 		= #{rsvt1}, 
			RSVT2		= #{rsvt2}, 
			RSVT3		= #{rsvt3}, 
			CD_SEQ		= #{cdSeq}, 
			STTS_CD		= #{sttsCd}

 

 

이렇게 넣다가 에러가 났는데

 

DB TABLE에 PK로 선언되거나 UK 로 선언된 것을 다 COFLICT 안에 넣어줘야한다.

 

INSERT INTO TB_CD(CTGRY, CD, LVL, CD_NM, CD_EXPLN, RSVT1, RSVT2, RSVT3, CD_SEQ, STTS_CD, SITE_SN)
		VALUES(#{ctgry}, #{cd}, #{lvl}::INTEGER, #{cdNm}, #{cdExpln}, #{rsvt1}, #{rsvt2}, #{rsvt3}, #{cdSeq}, #{sttsCd}, #{siteSn})
		ON CONFLICT(CTGRY, CD, LVL, SITE_SN) DO UPDATE 
	 	SET	CD_NM 		= #{cdNm},
			CD_EXPLN 	= #{cdExpln}, 
			RSVT1 		= #{rsvt1}, 
			RSVT2		= #{rsvt2}, 
			RSVT3		= #{rsvt3}, 
			CD_SEQ		= #{cdSeq}, 
			STTS_CD		= #{sttsCd}
728x90
반응형