Background Image

FORUM

조회 수 13184 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
 2008 최신버전에서

 CREATE TABLE board_good (
  bg_id integer auto_increment NOT NULL,
  bo_table varchar(40) default '' NOT NULL,
  wr_id integer default 0 NOT NULL,
  mb_id varchar(40) default '' NOT NULL,
  bg_flag varchar(510) default '' NOT NULL,
  bg_datetime timestamp default timestamp'09:00:00 AM 01/01/1970'  NOT NULL,
  PRIMARY KEY  (bg_id),
  UNIQUE (bo_table,wr_id,mb_id)
);

위와같이 테이블 작성후 첨부파일의 엑셀데이타를 삽입한 다음

insert into board_good ( bo_table, wr_id, mb_id, bg_flag, bg_datetime )
values ( 'dddiary', 7535, 'admin', 'good', '2010-02-25 16:10:54')

위와같은 삽입쿼리를 실행할시에

bo_table,wr_id,mb_id 이 세가지 값이 동시에 같은 값이 없는데도 오류(Operation would have caused one or more unique constraint violations.)가 납니다.

어떻게 해야하죠??
  • ?
    남재우 2010.02.26 06:00

    안녕하세요.
    자동증가 필드는 그 값을 자동적으로 증가시키기 위해 별도로 그 값을 관리하며, 그 값은 내부적으로 serial 개체를 만들어 관리를 합니다. 아울러 자동증가 속성을 가진 필드에 대하여 사용자가 임의의 값을 입력하는 것을 허용합니다. unique 속성이 없다면 사용자가 자동증가에 상관없이 값을 입력할 수 있도록 되어있습니다. 이때 그 값은 자동증가값이 관리되고 있는 serial 개체의 값에 반영되지 않습니다.
    즉, 사용자가 입력한 임의의 자동증가필드에 대한 값은 데이터베이스에서 관리하고 있는 자동증가값에 반영되지 않아 값이 중복될 가능성을 내포하고 있습니다.
    따라서 지금과 같이 자동증가 속성을 가지는 필드에 대하여 엑셀화일을 통하여 임의의 값을 입력하게 되면 그 값이 입력되기는 하지만, 데이터베이스에서 관리하는 자동증가값에는 반영되지 않아 insert 질의에서 입력시 자동증가 필드에 데이터베이스에서 관리하던 값이 입력되어 중복 오류가 발생하는 것입니다.
    결국 에러는 unique 와 상관없이 bg_id 가 PK 로 unique 가 보장되어야 하는데, 임의로 입력한 데이터에 1의 값이 들어가 있고 이를 알 수 없는 데이터베이스에서는 자동증가속성을 이용하여 1을 입력하려고 하니 unique 오류가 발생한 것입니다.
    이를 해결하기 위해서는 자동증가속성의 현재값을 사용자가 입력한 최대값으로 변경후 사용해야 합니다.
    select  max(bg_id) from board_good 와 같이 질의를 하여 bg_id 의 최대값을 얻은 후,(그 값이 20000이라고 가정하면)
    alter serial board_good_ai_bg_id start with 20000 와 같이 자동증가값이 저장되어 있는 serial 개체의 값을 변경합니다.
    serial 개체의 이름은 <테이블이름>_ai_<필드명> 으로 만들어 집니다.

    그리고 올려주신 화일에도 오류가 있습니다. 아래와 같이 2,3,4 번째 값이 unique 로 설정한 부분인데 값이 같습니다. 아마 가공하면서 중복된 것 같습니다.
    2 ddapply 1 hansolmin1004 good 2007-12-01 00:06:24
    3 ddapply 1 hansolmin1004 good 2007-12-01 15:43:23


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4263
1276 cubrid 2008 r4.3.1008.jar 란 파일이 있나요? 1 rex 2013.11.29 9743
1275 영문 대소문자 구분 1 헛개수 2014.07.24 9744
1274 응답없음 현상 2 까망이 2011.01.24 9746
1273 큐브리드 매니저에 데이타베이스 복구가 비활성화 되어있습니다 2 초보 2010.02.08 9751
1272 QUBRID 매니저에서 실행계획을 볼려면.. 2 파란토끼 2013.10.02 9755
1271 인덱스가 실행이 안되는 것 같아서 요청 드려 봅니다. 3 취우다 2017.04.15 9758
1270 큐브리드를 사용해 윈도환경에서 사용할 프로그램을 개발코자 합니다 1 혜승아빠 2010.01.08 9762
1269 리눅스에 큐브리드 2.1설치오류 3 SoMa 2010.09.13 9763
1268 insert 문에서 다량의 데이타입력할 때에 대한 질문입니다. 1 지니보이 2009.10.27 9763
1267 데이터베이스 클래스수와 성능과의 관계에 대한 질문 1 김현성 2011.06.01 9765
1266 큐브리드 테이블 or 데이터 삭제시 멈춤현상..... 2 니나노 2011.01.10 9767
1265 저장 프로시저에서 JDBC 연결이 안되는 것 같습니다. 2 animan10 2017.03.10 9776
1264 eclipse plugin 설치 에러 1 file 바다~ 2013.12.06 9777
1263 큐브리드 메니저 데이터베이스검사시 에러문구 1 까망이 2009.12.30 9777
1262 본 게시판 버그가 있는 듯... 2 메이커스 2009.08.03 9778
1261 542번글 재질의 2 file 초보 2010.02.09 9780
1260 오라클 to_date 큐브리드 변환좀 알려주세요ㅠㅠㅠㅠ 1 한상오빠 2016.08.31 9783
1259 테이블 정보를 가지고 오는 쿼리를 알고 싶습니다. 1 미스터비니 2011.01.04 9783
1258 프로시저 변환 문의 2 천상 2016.06.15 9785
1257 2008 R2.2 x64 설치시 오류... 1 ~~ 2010.07.27 9794
Board Pagination Prev 1 ... 131 132 133 134 135 136 137 138 139 140 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales