2011-03-25 5 views
4

나는 테이블 A와 테이블 B를 가지고있다.외래 키 제약 조건을 가진 두 개의 SQL 테이블을 서로 어떻게 만들 수 있습니까?

나는 A와 B 사이에 1 - * 관계가 있기를 원한다. 그래서 모든 A에 대해 하나의 특정 B가있다. .

그래서 나는 다음과 같은 테이블이 있습니다

Table A 
AKey INT IDENTITY PRIMARY KEY, 
PrerequisiteKey INT FOREIGN KEY REFERENCES B(BKey) 

Table B 
BKey INT IDENTITY PRIMARY KEY, 
RelationalAKey INT FOREIGN KEY REFERENCES A(AKey) 

난 항상 내가 이런 식으로 (위) 수행하려고 하는가 아니면 내가 프로그래밍 방식으로 첫 번째 항목 것을 결정해야 모든 A. 1 B가있을 싶어 B에서 A 키 =는 "전제 조건"B입니까?

해당 PrerequisiteKey를 별도의 필드로 저장할 수 있지만 SQL은 제약 조건을 만들기 전에 두 테이블이 모두 존재해야하기 때문에 이러한 방식으로 테이블을 정의 할 수 없습니다.

편집 : 또는 테이블에 응답을 만든 후에 첫 번째 제약 조건을 추가합니까?

답변

5

이러한 경우 일반적으로 테이블을 만든 다음 제약 조건을 추가합니다. ALTER TABLE 구문을 사용하여 생성 후 FK를 변경하십시오.

ALTER TABLE A 
ADD CONSTRAINT aref FOREIGN KEY PrerequisiteKey REFERENCES B(BKey); 
+0

그래,이 작업을 완료하자마자이 작업을 수행 할 수 있음을 알았습니다. 감사! – DLeh

1

2 테이블을 만든 다음 ALTER TABLE 및 ADD CONSTRAINT를 사용하여 제약 조건을 만들 수 있습니다.

Ex. : 나는 1-1 관계를 시행 할 때

ALTER TABLE .. 
{ 
    ADD CONSTRAINT ... 
} 
0

보통, 내가 먼저 입력해야하고 나는 uniquesness을 적용하는 다른 테이블의 PK (로 해당 테이블의 ID를 사용하는 테이블 결정). 그런 다음 Pk/FK 관계를 만듭니다. 어떤 이유로 든 PK로 사용할 수 없다면 FK 필드를 테이블에 넣고 고유 인덱스를 만듭니다. 두 테이블 모두에서 FK를 사용하지 마십시오. SQl 서버가 허용하는 경우 놀랄 것입니다. 또는 둘 중 하나에 삽입 할 수 없습니다.

관련 문제