我对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));
这开始变得非常令人沮丧,所以任何帮助都会非常感激。
答案 0 :(得分:0)
您的外键SESSIONS_FK2
错误。
父表SCREEN
有composite Primary key
所以当你引用它时你需要在引用中添加复合列
CONSTRAINT SESSIONS_FK2 FOREIGN KEY(SCREENID,BRANCHID) REFERENCES SCREEN(SCREENID,BRANCHID)
同时根据SQL SERVER
知识撰写此答案,请评论是否有效
答案 1 :(得分:0)
您有screen
的复合主键,因此您必须使用这两个组件来引用它:
CONSTRAINT SESSIONS_FK2 FOREIGN KEY(SCREENID, BRANCHID) REFERENCES SCREEN(SCREENID, BRANCHID)