2016-09-22 1 views
0

Это таблицы, которые у меня есть до сих пор, и ошибка для таблицы SESSIONS, и я не могу найти, что такое ошибка? Я ввел неправильные первичные ключи и внешние ключи?Ошибка SQL: ORA-02270: Ошибка при создании таблицы

CREATE TABLE BRANCH(
BRANCHID CHAR(2) NOT NULL, 
BRANCHNAME VARCHAR2(20), 
BRANCHSUBURB VARCHAR2(15), 
BRANCHPOSTCODE CHAR(4), 
CONSTRAINT BRANCH_PK PRIMARY KEY(BRANCHID)); 

CREATE TABLE SCREEN(
CHAR(2) NOT NULL, 
SCREENID CHAR(2) NOT NULL, 
SCREENCAPACITY NUMBER(3), 
CONSTRAINT SCREEN_PK PRIMARY KEY(BRANCHID, SCREENID), 
CONSTRAINT SCREEN_FK FOREIGN KEY(BRANCHID) REFERENCES BRANCH(BRANCHID)); 

CREATE TABLE MOVIE(
MOVIEID CHAR(2) NOT NULL, 
MOVIENAME VARCHAR2(20), 
MOVIEGENRE VARCHAR2(20), 
MOVIECLASSIFICATION VARCHAR2(5), 
CONSTRAINT MOVIE_PK PRIMARY KEY(MOVIEID)); 

CREATE TABLE SESSIONS(
SESSIONID CHAR(4) NOT NULL, 
BRANCHID CHAR(2) NOT NULL, 
SCREENID CHAR(2) NOT NULL, 
MOVIEID CHAR(2) NOT NULL, 
SESSIONDATE DATE, 
SESSIONPRICE NUMBER(4,2), 
CONSTRAINT SESSIONS_PK PRIMARY KEY(SESSIONID, BRANCHID, SCREENID, MOVIEID), 
CONSTRAINT SESSIONS_FK1 FOREIGN KEY(BRANCHID) REFERENCES BRANCH(BRANCHID), 
CONSTRAINT SESSIONS_FK2 FOREIGN KEY(SCREENID) REFERENCES SCREEN(SCREENID), 
CONSTRAINT SESSIONS_FK3 FOREIGN KEY(MOVIEID) REFERENCES MOVIE(MOVIEID)); 

ответ

0

У вас есть составной первичный ключ для SCREEN. Таким образом, проблема заключается в следующем:

CONSTRAINT SESSIONS_FK2 FOREIGN KEY(SCREENID) REFERENCES SCREEN(SCREENID), 

Вы можете легко исправить это, потому что у вас также есть BRANCHID:

CONSTRAINT SESSIONS_FK2 FOREIGN KEY(SCREENID, BRANCHID) REFERENCES SCREEN(SCREENID, BRANCHID), 
+0

Кроме того, в данном случае это не имеет смысла иметь 'branchid' в одиночку, как иностранный ключ; просто введите пару '(screenid, branchid)' как составной внешний ключ. – mathguy

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