首页 文章

唐't understand why my SQL isn'工作

提问于
浏览
0
/* DROP TABLE STATEMENTS*/
DROP TABLE BUILDING CASCADE CONSTRAINTS PURGE;
DROP TABLE ROOM CASCADE CONSTRAINTS PURGE;
DROP TABLE CONFERENCESESSION CASCADE CONSTRAINTS PURGE;
DROP TABLE SPEAKER CASCADE CONSTRAINTS PURGE;

/* CREATE TABLE STATEMENTS*/
CREATE TABLE BUILDING(
BUILDINGNO CHAR(2),
BUILDINGWING VARCHAR2(15),
BUILDINGLANE VARCHAR2(15),
CONSTRAINT BUILDING_PK PRIMARY KEY(BUILDINGNO));

CREATE TABLE ROOM(
BUILDINGNO CHAR(2),
ROOMNO CHAR(2),
ROOMCAPACITY NUMBER(3),
CONSTRAINT ROOM_PK PRIMARY KEY(BUILDINGNO, ROOMNO),
CONSTRAINT ROOM_FK FOREIGN KEY(BUILDINGNO) REFERENCES BUILDING(BUILDINGNO));

CREATE TABLE SPEAKER(
SPEAKERID CHAR(2),
SPEAKERNAME VARCHAR2(20),
SPEAKERADDRESS VARCHAR2(50),
SPEAKERPHONE CHAR(12),
CONSTRAINT SPEAKER_PK PRIMARY KEY(SPEAKERID));

CREATE TABLE CONFERENCESESSION(
SESSIONID CHAR(4),
BUILDINGNO CHAR(2),
ROOMNO CHAR(2),
SPEAKERID CHAR(2),
SESSIONDATE DATE,
SESSIONPRICE NUMBER(4, 2),
CONSTRAINT CONFERENCE_PK PRIMARY KEY(SESSIONID),
CONSTRAINT CONFERENCE_FK1 FOREIGN KEY(BUILDINGNO)REFERENCES BUILDING(BUILDINGNO),
CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(ROOMNO) REFERENCES ROOM(ROOMNO),
CONSTRAINT CONFERENCE_FK3 FOREIGN KEY(SPEAKERID) REFERENCES SPEAKER(SPEAKERID));

运行上面的代码时出现此错误:

> table 建筑物掉落了 . 表ROOM下降了 . 从行开始时出错:命令中的4  -  DROP TABLE CONFERENCESIONION CASCADE CONSTRAINTS PURGE错误报告 -  ORA-00942:表或视图不存在00942. 00000  - “表或视图不存在”*原因:*操作:表SPEAKER丢弃 . 表构建已创建 . 表格ROOM已创建 . 表扬声器已创建 . 从第28行开始出错:命令 -  CREATE TABLE CONFERENCESESSION(SESSIONID CHAR(4),BUILDINGNO CHAR(2),ROOMNO CHAR(2),SPEAKERID CHAR(2),SESSIONDATE DATE,SESSIONPRICE NUMBER(4,2),CONSTRAINT CONFERENCE_PK主要密钥(SESSIONID),约束 Session _FK1外部密钥(BUILDINGNO)参考建筑物(BUILDINGNO),约束 Session _FK2外部密钥(ROOMNO)参考房间(ROOMNO),约束 Session _FK3外部密钥(语音)参考语音者(SPEAKERID))错误报告 -  ORA- 02270:此列列表02270没有匹配的唯一键或主键.00000  - “此列列表没有匹配的唯一键或主键”*原因:CREATE / ALTER TABLE语句中的REFERENCES子句给出了一个列列表引用的表中没有匹配的唯一或主键约束 .  *操作:使用ALL_CONS_COLUMNS目录视图查找正确的列名称

有帮助吗?

1 回答

  • 5

    CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(ROOMNO) REFERENCES ROOM(ROOMNO) :外键必须引用另一个表的整个主键(或唯一键) . 所以只需添加buildingno:

    CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(BUILDINGNO, ROOMNO) REFERENCES ROOM(BUILDINGNO, ROOMNO)
    

相关问题