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 5391 게시물 읽기
No. 5391
FOREIGN KEY 가 생성이 안되요.
작성자
주성열
작성일
2004-07-01 15:09
조회수
5,209

제가 만든 테이블을 간단히 요약하면요.

create table t1 (

a SERIAL NOT NULL,

b VARCHAR(20) NOT NULL,

.

.

PRIMARY KEY(a,b)

);

create table t2 (

x SERIAL NOT NULL,

y VARCHAR(20) NOT NULL,

a SERIAL NOT NULL,

.

.

PRIMARY KEY(x,y),

FOREIGN KEY(a) REFERENCES t1(a)

);

이렇게 t2 테이블을 생성하면

there is no unique constraint matching given keys for referenced table "t1"

이런 에러메시지로 foreign key 생성에 실패하구요.

또는 밑에 foreign key 설정을 a SERIAL NOT NULL REFERENCES t1 으로 바꿔도

number of referencing and referenced columns for foreign key disagree 에러 메시지로

foreign key가 생성이 안되네요.

도움 부탁드립니다. (__)

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

t1의 primary key가 a, b 처럼 멀티 컬럼이기 때문입니다.

a만 primary key로 잡혀 있다면 될거구요.

 

아니면 t1의 a 에 유니크 인덱스를 잡아주세요.

신기배(nonun)님이 2004-07-01 15:56에 작성한 댓글입니다.

신기배님 답변 감사드립니다. (__)

흠.. 솔직히 DB업무를 시작한지 얼마 안되 유니크 인덱스가 뭔지를

모르겠지만, 막연함에서 힌트를 얻었어느 힘이 돼네요 ^^

매뉴얼 한번 뒤져봐야 겠네요. ^^

주성열님이 2004-07-01 16:40에 작성한 댓글입니다. Edit

레퍼런스되는 테이블의 pk가 두개의 칼럼으로 구성되어있으므로

포린키를 만들때는 두개의 칼럼을 모두 적어주어야합니다.

이 두개의 값을 알아야 레퍼런스 되는 테이블에서 이놈이 어떤놈을 레퍼런스하고 있는지 결정이 되니까요...(pk의 의미를 생각하시길..)

위의 예에서는

 

FOREIGN KEY(a,b) REFERENCES t1(a,b)

 

 

이렇게 바꾸면 되겠네요..

물론 b VARCHAR(20) 이라는 라인도 있어야하겠고요...

 

재학님이 2004-07-02 11:16에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
5394데이터베이스 초기화가 안되네요....
cha
2004-07-03
2100
5393PostgreSQL 윈도우용 배포판이 출시 될련가... [7]
정재익
2004-07-02
2702
5392CONNECT BY 패치 사용해보신분 계신가요? [3]
초보자
2004-07-01
2442
5391FOREIGN KEY 가 생성이 안되요. [3]
주성열
2004-07-01
5209
5389오라클의 Hash Join 과 PostreSQL 의 hash join ?? [3]
폐인짱
2004-06-30
3605
5388재고정산속도 문제입니다... 개발경험이 있으신 분들의 도움 바랍니다... [1]
욱~~
2004-06-29
2376
5387ECPG 에서 질문 있습니다. [2]
주성열
2004-06-29
2088
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.010초, 이곳 서비스는
	PostgreSQL v17.5로 자료를 관리합니다