2012-03-08 3 views
8

복합 외래 키 관계/제약 조건을 만들려고합니다. 모든 테이블은 비어 있습니다.복합 외래 키 제약 만들기

CREATE TABLE [dbo].[ChemSampleValueTest](
    [SampleNumber] [int] NOT NULL, 
    [ParameterID] [int] NOT NULL, 
    [Value] [numeric](18, 6) NOT NULL, 
    [Accuracy] [varchar](50) NULL, 
    [ResultGroupID] [int] NOT NULL, 
    [QAState] [nvarchar](32) NOT NULL, 
    CONSTRAINT [PK_SampleValueTest] PRIMARY KEY CLUSTERED 
    (
     [SampleNumber] ASC, 
     [ParameterID] ASC, 
     [ResultGroupID] ASC 
    ) 
) ON [PRIMARY] 

이 테이블 : :이 테이블이

CREATE TABLE [dbo].[ChemSampleValueEventLinkTest](
    [Event] [int] NOT NULL, 
    [SampleNumber] [int] NOT NULL, 
    [ResultGroupID] [int] NOT NULL, 
    [ParameterID] [int] NOT NULL, 
    [QAState] [nvarchar](32) NULL 
) ON [PRIMARY] 

을하고 나는이처럼 그들을 연결하려면 :

alter table [ChemSampleValueEventLinkTest] add 
    constraint FK_ChemSampleValueEvent_ChemSampleValue_test 
    foreign key ([SampleNumber], [ResultGroupID], [ParameterID]) 
    references ChemSampleValueTest ([SampleNumber], [ResultGroupID], [ParameterID]) 

를 지금까지 내가 모든 열 유형을 말할 수있는 동일하지만 말을 계속한다.

외부 키 'FK_ChemSampleValueEvent_ChemSampleValue_test'의 참조 열 목록과 일치하는 참조 된 테이블 'ChemSampleValueTest'에 기본 또는 후보 키가 없습니다.

어디로 잘못 가고 있습니까?

+0

이 (주로 제약 조건 위반에 대해) 주위에 점선 몇 가지 유사한 질문이 있습니다,하지만 난 나에게 도움이 아무것도 찾을 수 없습니다. – sennett

답변

15

FK/참조 목록을 PK 정의에 나타나는 순서대로 나열해야합니다.

이 작동합니다 :

CREATE TABLE [dbo].[ChemSampleValueTest](
    [SampleNumber] [int] NOT NULL, 
    [ParameterID] [int] NOT NULL, 
    [Value] [numeric](18, 6) NOT NULL, 
    [Accuracy] [varchar](50) NULL, 
    [ResultGroupID] [int] NOT NULL, 
    [QAState] [nvarchar](32) NOT NULL, 
    CONSTRAINT [PK_SampleValueTest] PRIMARY KEY CLUSTERED 
    (
     [SampleNumber] ASC, 
     [ParameterID] ASC, 
     [ResultGroupID] ASC 
    ) 
) ON [PRIMARY] 

CREATE TABLE [dbo].[ChemSampleValueEventLinkTest](
    [Event] [int] NOT NULL, 
    [SampleNumber] [int] NOT NULL, 
    [ResultGroupID] [int] NOT NULL, 
    [ParameterID] [int] NOT NULL, 
    [QAState] [nvarchar](32) NULL 
) ON [PRIMARY] 

alter table [ChemSampleValueEventLinkTest] add 
    constraint FK_ChemSampleValueEvent_ChemSampleValue_test 
    foreign key ([SampleNumber], [ParameterID], [ResultGroupID]) 
    references ChemSampleValueTest ([SampleNumber], [ParameterID], [ResultGroupID]) 
+0

정확합니다. 그것에 대해 생각하면 의미가 있습니다. 복합 외래 키. 마인드 벤딩,하지만 이해하기 시작합니다. 도움 주셔서 감사합니다. – sennett