2017-03-07 18 views
0

誰かがこのスクリプトで私を助けることができたら、私はそれを高く評価します。SQL外部キー

私は基本的に外部キーを使用して複数の主キーを持つテーブルを参照しようとしていますが、エラーが発生し続けます。私は、パーソナルトレーナーのためのテーブル作成スクリプトを実行すると、私はこのエラーになります:

Msg 1776, Level 16, State 0, Line 3 There are no primary or candidate keys in the referenced table 'Schedule' that match the referencing column list in the foreign key 'FK__Personal_Trainer__38996AB5'. Msg 1750, Level 16, State 0, Line 3 Could not create constraint or index. See previous errors.

ここに両方の​​テーブルのCREATE TABLEスクリプトがあります。私は個人的なトレーナーのスケジュールでテーブルを参照するために外部キーを使用しようとしています。 FitnessWebAppは、データベースの名前です。

use FitnessWebApp 

create table Schedule 
(
    day char(20), 
    time char(20), 
    name char(30), 
    gymName char(30) 
    primary key (name, gymName, day, time) 
); 

use FitnessWebApp 

create table Personal_Trainer 
(
    name char(30), 
    gymName char(30) 
    primary key(name, gymName), 
    foreign key (name, gymName) REFERENCES Schedule(name, gymName) 
); 
+0

http://stackoverflow.com/search?q=%5Bsql-server%5D+There+are+no+primary+or+candidate+keys+in + +参照+テーブル –

+0

「複数の主キーを持つテーブル」のようなものはありません。*複合*主キーを持つテーブルがあります。プライマリキーは1つだけです。間違った方法でFKを作成しようとしているように見えます(スケジュールがトレーナーを参照するのではなく、トレーナーを参照するべきではないでしょうか?) –

答えて

0

これを試してみてください:

create table Personal_Trainer (
    id int(10) not null, 
    trainerName char(30), 
    primary key (id)); 

create table gym (
    id int(10) not null, 
    gymName char(30), 
    primary key (id)); 

create table Schedule (
    id int (10) not null, 
    trainerId int(10), 
    gymId int(10), 
    gymDay Date, 
    gymTime Datetime, 
    primary key (id), 
    foreign key (trainerId) REFERENCES Personal_Trainer (id), 
    foreign key (gymId) REFERENCES gym (id));