当我为所需的表标记主键引用时,无法创建表,因为oracle显示“此列列表没有匹配的唯一键或主键”。
第一张表成功创建:
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'标记为我的主键。但是oracle似乎无法找到。
由于
答案 0 :(得分:4)
您引用的PK是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 :(得分:1)
检查外键中引用的表格。这些列必须是主键,否则在外表上是唯一的。