2012-03-14 43 views
0

複合主キーを持つテーブルを作成しました。他の表の複合主キー列の1つを参照したときにエラーが発生し、外部キー関係を作成できません。テーブル作成時の外部キーエラー

エラーメッセージ:

外国 キーで参照する列リストに一致し、参照テーブル 「t_app_arcv_tbl」にはプライマリまたは候補キーがありません「fk_APPLICATION_CD」。複合主キー

Create table t_app_arcv_tbl 
(
    APPLICATION_CD varchar(10),  
    TBL_NM varchar(50) not null , 
    ARCV_TBL_TYP_CD char(2) not NULL constraint fk_Arcv_TBL_TYP_CD foreign key references t_app_arcv_tbl_typ(ARCV_TBL_TYP_CD) , 
    ACT_ID Char(1) not NULL, 
    OPER_ID varchar(50) not NULL,  
    PSTDT datetime not NULL   
    Constraint PK_AppName_TblNM PRIMARY KEY(APPLICATION_CD,TBL_NM) 
) 

表Iは、外部キー制約で

を作成しようとしている次の表*

-- Create Table Script for archival process Tracking 
create table t_app_arcv_log   
(
    APPLICATION_CD varchar(10) not NULL constraint fk_APPLICATION_CD foreign key references t_app_arcv_tbl(APPLICATION_CD),   
    TBL_NM varchar(50) constraint fk_TBL_NM foreign key references t_app_arcv_tbl(TBL_NM), 
    XTRCT_DT datetime, 
    ARCV_TYP_CD char(2) not NULL constraint fk_Arcv_TYP_CD foreign key references t_app_arcv_typ(ARCV_TYP_CD),   
    STRT_DT datetime, 
    END_DT datetime, 
    ROW_CNT_BFR int, 
    ROW_CNT_AFT int, 
    ARCV_STTS_CD char(1) not null, 
    OPER_ID varchar(50) not NULL,  
    PSTDT datetime not NULL 
) 

親切に作成する方法を私を助けます外部キー関係を持つテーブル。

ありがとうございました!

--Regards、 ランガ

答えて

1

メインテーブルが複合主キー

PRIMARY KEY(APPLICATION_CD,TBL_NM) 

を定義している場合、そのテーブルを参照するすべてのテーブルがそのように全体の複合キーを使用する必要があります。 FK参照。あなたはできません参照のみ主要なキーの部分 - それは全体のキーまたは何もありません。

はあなたの子テーブルに両方の列が必要になります。

CREATE TABLE dbo.t_app_arcv_tbl 
(
    APPLICATION_CD varchar(10),  
    TBL_NM varchar(50) not null , 
    ARCV_TBL_TYP_CD char(2) not NULL, 
    TBL_NM varchar(50) not null , -- <== ADD THIS 
    ACT_ID Char(1) not NULL, 
    OPER_ID varchar(50) not NULL,  
    PSTDT datetime not NULL   
    Constraint PK_AppName_TblNM PRIMARY KEY(APPLICATION_CD,TBL_NM) 
) 

-- add foreign key constraint - it **MUST** define and use **BOTH** columns 
-- from the PK of the referenced table! 
ALTER TABLE dbo.t_app_arcv_tbl 
ADD CONSTRAINT fk_Arcv_TBL_TYP_CD 
FOREIGN KEY (ARCV_TBL_TYP_CD, TBL_NM) 
REFERENCES dbo.t_app_arcv_tbl_typ 
関連する問題