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
운영게시판
최근게시물
CUBRID Q&A 1216 게시물 읽기
No. 1216
Q.자식테이블에 insert할때의 에러문의입니다.
작성자
여인재
작성일
2008-08-14 13:14
조회수
5,728

부모테이블이 tb_service (pk는 serviceno), tb_diskserver (pk는 serverno)이고

자식테이블이 tb_storage (pk는 storageno, fk는 위 두 테이블의 pk인 serviceno, serverno)

입니다.

 

부모테이블에 각각 pk가 1인 레코드가 들어있고 자식테이블인 tb_storage에 insert하기 위해

 

insert into tb_storage (storageno, serviceno, serverno, rootpath, totalsize, usedsize, checkdt, nowdirectorypath)

values (1, 1, 1, \'D:/uptest/kbada_sdisk001\', 1000000, 10, \'20080814113425\', \'A/A\');

 

이 쿼리문을 큐브리드매니저에서 실행시켰더니

 

실행 오류: -495

1번째 라인에서 오류

 

오류내용:

  Execute: Not a user but the system can assign the attribute \'storageno\' created by \'ON CACHE OBJECT\' of foreign key. insert into tb_storage (storageno, serviceno, serverno, rootpath, totalsize, usedsize, checkdt, nowdirectorypath) values (1, 1, 1, \'D:/uptest/kbada_sdisk001\', 1000000, 10, \'20080814113425\', \'A/A\')

 

이러한 에러가 발생합니다.

해당 FK값이 부모테이블에 있고 PK인 storageno는 1로 해서 insert하는데 왜 이런 에러가 발생하는지 알수가 없네요.

혹시 아시면 좀 알려주십시요.

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

부모테이블에 값이 들어가 있어야 합니다.

 

물론 아래처럼 자식 테이블의 값과 같은 값이 들어가야되죠.

 

만약 다른 값을 넣게 된다면 에러가 발생합니다. 아래와 같이 오류가 발생한 이유는 부모테이블 pk에 값이 없는데, 자식 테이블에서 값을 넣으려고 하여 서로의 값이 맞지 않아 발생하는 에러입니다.

 

큐브리드에서는 ON CACHE OBJECT의 기능 지원으로 부모테이블과 자식테이블의 값을 자동적으로 확인하여 그 값의 오류가 있을 경우(특히 지금의 경우는 PK값이 없는 것이죠.) 오류를 발생하게 됩니다.

 

ON CACHE OBJECT란 아래와 같습니다.

- CUBRID에서 고유하게 지원되는 개념으로 외래 키 참조 설정에 객체 참조 관계를 정의하는 것을 의미한다.

- ON CACHE OBJECT를 정의하면 외래 키 클래스에서 기본 키 클래스를 도메인으로 갖는 칼럼이 생성되며, 외래 키 테이블에 데이터가 입력되면 자동으로 외래키 제약조건에 부합하는 기본 키 클래스의 객체 식별자(OID)가 입력된다.

 

수고하세요.

 

 

>부모테이블이 tb_service (pk는 serviceno), tb_diskserver (pk는 serverno)이고

>자식테이블이 tb_storage (pk는 storageno, fk는 위 두 테이블의 pk인 serviceno, serverno)

>입니다.

>

>부모테이블에 각각 pk가 1인 레코드가 들어있고 자식테이블인 tb_storage에 insert하기 위해

>

>insert into tb_storage (storageno, serviceno, serverno, rootpath, totalsize, usedsize, checkdt, nowdirectorypath)

>values (1, 1, 1, \'D:/uptest/kbada_sdisk001\', 1000000, 10, \'20080814113425\', \'A/A\');

>

>이 쿼리문을 큐브리드매니저에서 실행시켰더니

>

>실행 오류: -495

>1번째 라인에서 오류

>

>오류내용:

>  Execute: Not a user but the system can assign the attribute \'storageno\' created by \'ON CACHE OBJECT\' of foreign key. insert into tb_storage (storageno, serviceno, serverno, rootpath, totalsize, usedsize, checkdt, nowdirectorypath) values (1, 1, 1, \'D:/uptest/kbada_sdisk001\', 1000000, 10, \'20080814113425\', \'A/A\')

>

>이러한 에러가 발생합니다.

>부모테이블이 2개가 있으면 자식테이블에 insert가 안되는 것인가요???

>혹시 아시면 좀 알려주십시요.

 

김범준님이 2008-08-14 15:09에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1219Q.큐브리드 클라이언트 프로그램에서 다음과 같은 에러가 발생합니다.. [1]
장대용
2008-08-20
4902
1218Q.alert문 답변글을 보고 궁금한게 있어서 질문을 드립니다.. [1]
궁금이
2008-08-19
5133
1217Q.ALTER 구문을 이용해서 추가할 수 있는 제약조건에는 어떤게 있나요? [2]
사용자1
2008-08-18
5765
1216Q.자식테이블에 insert할때의 에러문의입니다. [1]
여인재
2008-08-14
5728
1215Q.만약, DB 에서 데드락이 발생할 경우 어떻게 제거할수 있나요..? [1]
검은별
2008-08-13
5406
1214Q.X/Open의 XA 기능을 지원하나요? [2]
송인목
2008-08-12
5748
1213Q.데이터 type timestamp의 디폴트 값에 대한 문의 [1]
Antonio
2008-08-12
5949
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다