Ошибка ORA-02270

#sql #oracle

#sql #Oracle

Вопрос:

Я очень новичок в SQL, и я застрял на этом некоторое время.

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

Ниже приведены две таблицы, которые вызывают проблему, ошибка возникает, когда я пытаюсь создать таблицу сеансов.

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

CREATE TABLE SESSIONS(
SESSIONID CHAR(4) NOT NULL,
BRANCHID CHAR(2),
SCREENID CHAR(2),
MOVIEID CHAR(2),
SESSIONDATE DATE,
SESSIONPRICE NUMBER(4,2),
CONSTRAINT SESSIONS_PK PRIMARY KEY(SESSIONID),
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));
  

Это начинает расстраивать, поэтому любая помощь будет очень признательна.

Ответ №1:

Ваш внешний ключ SESSIONS_FK2 неверен.

Родительская таблица SCREEN имеет composite Primary key so, когда вы ссылаетесь на нее, вам нужно добавить составные столбцы в ссылках

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

Также написание этого ответа на основе SQL SERVER знаний, пожалуйста, прокомментируйте, если он не работает

Ответ №2:

У вас есть составной первичный ключ для screen , поэтому вы должны ссылаться на него, используя оба компонента:

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