2016-10-19 3 views
0

Все в теории выглядит прямо в мой код, но я получаю сообщение об ошибке:Реферирование FK из другой таблицы

There are no primary or candidate keys in the referenced table 'GAMEPERIOD' that match the referencing column list in the foreign key 'PLAYS_FK_PERIOD'

Вот мой код:

Таблица Пытаюсь справки:

CREATE TABLE GAMEPERIOD(
GAMENUMBER VARCHAR(10), 
PERIODNUMBER CHAR(1), 
HSCORE VARCHAR(3), 
LSCORE VARCHAR(3), 
CONSTRAINT PERIOD_PK2 PRIMARY KEY (GAMENUMBER, PERIODNUMBER), 
CONSTRAINT PERIOD_FK_GAME2 FOREIGN KEY (GAMENUMBER) REFERENCES GAME(GAMEID) 
); 

Таблица Я пытаюсь создать:

CREATE TABLE PLAYS(
PERSONID CHAR(10) REFERENCES PLAYER, 
GAMENUMBER VARCHAR(10), 
PERIODNUMBER CHAR(1), 
POINTS INTEGER, 
MINUTESPLAYED NUMERIC(3,2), 
FTA SMALLINT, 
FTM SMALLINT, 
FGA SMALLINT, 
FGM SMALLINT, 
TPA SMALLINT, 
TPM SMALLINT, 
TR SMALLINT, 
OFFREB SMALLINT, 
ASSISTS SMALLINT, 
TURNOVERS SMALLINT, 
STEALS SMALLINT, 
BLOCKS SMALLINT, 
PF SMALLINT, 
CONSTRAINT PLAYS_PK PRIMARY KEY (PERSONID,GAMENUMBER,PERIODNUMBER), 
CONSTRAINT PLAYS_POINTS CHECK (POINTS=(FTM+FGM*2+3*TPM)), 
CONSTRAINT PLAYS_FK_PERIOD FOREIGN KEY (PERIODNUMBER, GAMENUMBER) REFERENCES GAMEPERIOD(PERIODNUMBER, GAMENUMBER) 
); 
+0

Поистине любопытно, извините, если это вообще не полезно ... При ограничении внешнего ключа на составной первичный ключ, порядок, в котором вы ссылаетесь на основной вопрос? Например, может ли это быть фактом, что ваш первичный ключ от первого скрипта - «GAMENUMBER, PERIODNUMBER», но внешний ключ во втором скрипте имеет «ССЫЛКИ GAMEPERIOD (PERIODNUMBER, GAMENUMBER)»? – Santi

+0

Попробуйте выполнить заказ ключей в своем FK по порядку ключей в PK 'GAMEPERIOD' – geofftnz

+0

@geofftnz Как я уже сказал? ;) – Santi

ответ

0

Вы не согласны с тем, как вы получаете доступ и определяете свои внешние ключи. Ваши переменные, которые вам нужно перевернуть на флопе (periodNumber, gameNumber), до (gameNumber, periodNumber)

Смежные вопросы