简体   繁体   English

不明白为什么我的SQL无法正常工作

[英]Don't understand why my SQL isn't working

/* 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));

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I get this error when running the above code: 运行以上代码时出现此错误:

Table BUILDING dropped. 表建筑物下降。

Table ROOM dropped. 表室已删除。

Error starting at line : 4 in command - 错误开始于第4行:
DROP TABLE CONFERENCESESSION CASCADE CONSTRAINTS PURGE 下降表会议级联约束清除
Error report - 错误报告 -
ORA-00942: table or view does not exist ORA-00942:表或视图不存在
00942. 00000 - "table or view does not exist" 00942. 00000-“表或视图不存在”
*Cause: *原因:
*Action: *行动:

Table SPEAKER dropped. 表SPEAKER下降了。

Table BUILDING created. 已创建表BUILDING。

Table ROOM created. 表ROOM已创建。

Table SPEAKER created. 表SPEAKER已创建。

Error starting at line : 28 in command - 错误开始于第28行:
CREATE TABLE CONFERENCESESSION( 创建表会议(
SESSIONID CHAR(4), SESSIONID CHAR(4),
BUILDINGNO CHAR(2), BUILDINGNO CHAR(2),
ROOMNO CHAR(2), ROOMNO CHAR(2),
SPEAKERID CHAR(2), SPEAKERID CHAR(2),
SESSIONDATE DATE, SESSIONDATE DATE,
SESSIONPRICE NUMBER(4, 2), 会议价格(4,2),
CONSTRAINT CONFERENCE_PK PRIMARY KEY(SESSIONID), CONSTRAINT CONFERENCE_PK主键(SESSIONID),
CONSTRAINT CONFERENCE_FK1 FOREIGN KEY(BUILDINGNO)REFERENCES BUILDING(BUILDINGNO), CONSTRAINT CONFERENCE_FK1外键(BUILDINGNO)参考建筑物(BUILDINGNO),
CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(ROOMNO) REFERENCES ROOM(ROOMNO), CONSTRAINT CONFERENCE_FK2外键(ROOMNO)参考ROOM(ROOMNO),
CONSTRAINT CONFERENCE_FK3 FOREIGN KEY(SPEAKERID) REFERENCES SPEAKER(SPEAKERID)) CONSTRAINT CONFERENCE_FK3外键(SPEAKERID)参考SPEAKER(SPEAKERID))

Error report - 错误报告 -
ORA-02270: no matching unique or primary key for this column-list ORA-02270:此列列表没有匹配的唯一键或主键
02270. 00000 - "no matching unique or primary key for this column-list" 02270. 00000-“此列列表没有匹配的唯一键或主键”
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement gives a column-list for which there is no matching unique or primary key constraint in the referenced table. *原因:CREATE / ALTER TABLE语句中的REFERENCES子句提供了一个列列表,该列列表在被引用的表中没有匹配的唯一或主键约束。
*Action: Find the correct column names using the ALL_CONS_COLUMNS catalog view *操作:使用ALL_CONS_COLUMNS目录视图查找正确的列名称

Any help? 有什么帮助吗?

CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(ROOMNO) REFERENCES ROOM(ROOMNO) : A foreign key has to reference the entire primary key (or unique key) of another table. CONSTRAINT CONFERENCE_FK2 FOREIGN KEY(ROOMNO) REFERENCES ROOM(ROOMNO) :外键必须引用另一个表的整个主键(或唯一键)。 So simply add buildingno: 因此,只需添加buildingno:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM