Неправильная ссылка на FK и PK - PullRequest
0 голосов
/ 15 ноября 2011

Невозможно создать таблицу, поскольку оракул показывает «нет соответствующего уникального или первичного ключа для этого списка столбцов», когда я пометил ссылку на первичный ключ для требуемой таблицы.

Первая таблица создана успешно:

CREATE TABLE TEST
  (
    TESTno VARCHAR2(6) NOT NULL,
    ExamNo VARCHAR2(6) NOT NULL,
    TEST_Date DATE NOT NULL,
    ACTUAL DATE,
    PREDICTED Date,
    CONSTRAINT TESTPKs PRIMARY KEY (TEST_Date, TESTno, ExamNo),
    CONSTRAINT TTESTNO_Fk FOREIGN KEY (TESTno) REFERENCES TESTPAPER (Flightno)
    CONSTRAINT TEXAMNo_FK FOREIGN KEY (ExamNo) REFERENCES Exam (ExamNo)
  );

Вот таблица, которую я хочу создать и выдающая мне ошибку:

CREATE TABLE Assignment
  (
    TEST_Date DATE NOT NULL,
    ExamNo VARCHAR2(6) NOT NULL,
    TestNo VARCHAR2(6) NOT NULL,
    Type  VARCHAR2(20),
    Hours_Spent Decimal(4,2),
    CONSTRAINT ASSIGNPKS PRIMARY KEY (TEST_Date, TestNo , ExamNo),
    CONSTRAINT ASSIGNTESTDATE_FK FOREIGN KEY (TEST_Date) REFERENCES TEST(TEST_Date) ON
  DELETE CASCADE,
    CONSTRAINT ASSIGNTESTNO_FK FOREIGN KEY (TESTno) REFERENCES TESTPAPER (Flightno)
    CONSTRAINT TEXAMNo_FK FOREIGN KEY (ExamNo) REFERENCES Exam (ExamNo)
  );

Могу ли я знать, в чем проблема, из-за которой у меня не совпадают уникальные первичные ключи?Я уже пытался воссоздать и пометил «test_Date» в качестве моего первичного ключа.Но оракул не может найти.

Спасибо

Ответы [ 2 ]

4 голосов
/ 15 ноября 2011

ПК, на который вы ссылаетесь, является PRIMARY KEY (TEST_Date, TESTno, ExamNo) - следовательно, внешний ключ также должен быть FOREIGN KEY (TEST_Date, TESTno, ExamNo). Ошибка, которую вы получаете, связана с вашей попыткой сослаться на часть TEST PK.

См. Также http://download.oracle.com/docs/cd/B10500_01/server.920/a96524/c22integ.htm

1 голос
/ 15 ноября 2011

Проверьте таблицы, на которые вы ссылаетесь в своих внешних ключах. Эти столбцы должны быть первичным ключом или иным образом уникальным для внешней таблицы.

...