SQL : Table 或者视图不存在,为什么?
SQL : Table or view doesn't exist, why?
代码如下:
DROP TABLE FILM CASCADE CONSTRAINTS;
DROP TABLE COMPANY CASCADE CONSTRAINTS;
DROP TABLE MAIN_ACTOR CASCADE CONSTRAINTS;
DROP TABLE DIRECTOR CASCADE CONSTRAINTS;
CREATE TABLE FILM (
Film_ID NUMBER(4) PRIMARY KEY,
Title VARCHAR2(35) NOT NULL,
Year Date NOT NULL,
Language VARCHAR2(20),
Director_ID NUMBER(4) NOT NULL,
Actor_ID NUMBER(4) NOT NULL,
Company_ID NUMBER(4) NOT NULL,
Genre NUMBER(4) NOT NULL,
FOREIGN KEY (Director_ID) REFERENCES DIRECTOR(Director_ID),
FOREIGN KEY (Actor_ID) REFERENCES MAIN_ACTOR(Main_Actor_ID),
FOREIGN KEY (Company_ID) REFERENCES COMPANY(Company_ID)
);
CREATE TABLE COMPANY (
Company_ID NUMBER(4) PRIMARY KEY,
Company_Name VARCHAR2(20) NOT NULL,
Company_Country VARCHAR2(20) NOT NULL
);
CREATE TABLE MAIN_ACTOR (
Main_Actor_ID NUMBER(4) PRIMARY KEY,
First_Name VARCHAR2(20) NOT NULL,
Last_Name VARCHAR2(20) NOT NULL,
Birthday Date NOT NULL,
Country VARCHAR2(20)
);
CREATE TABLE DIRECTOR (
Director_ID NUMBER(4) PRIMARY KEY,
Director_First_Name VARCHAR2(20),
Director_Last_Name VARCHAR2(20) NOT NULL,
Director_BD Date,
Country VARCHAR2(20) NOT NULL
);
我得到的错误是:
Line 6
Error report -
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
所以我搜索了一下,但一无所获。当您使用错误的权限调用 select 时,似乎会发生所有类似的错误,但在这里对 CREATE TABLE 的简单调用给了我这个错误。
所以我尝试 删除 它并最终重新 创建 它但没有任何改变。
您在外部约束中引用了未创建的 table,因此请更改顺序。
第一个 table 没有外部约束,table 之后引用这些 table
DROP TABLE FILM CASCADE CONSTRAINTS;
DROP TABLE COMPANY CASCADE CONSTRAINTS;
DROP TABLE MAIN_ACTOR CASCADE CONSTRAINTS;
DROP TABLE DIRECTOR CASCADE CONSTRAINTS;
CREATE TABLE DIRECTOR (
Director_ID NUMBER(4) PRIMARY KEY,
Director_First_Name VARCHAR2(20),
Director_Last_Name VARCHAR2(20) NOT NULL,
Director_BD Date,
Country VARCHAR2(20) NOT NULL
);
CREATE TABLE MAIN_ACTOR (
Main_Actor_ID NUMBER(4) PRIMARY KEY,
First_Name VARCHAR2(20) NOT NULL,
Last_Name VARCHAR2(20) NOT NULL,
Birthday Date NOT NULL,
Country VARCHAR2(20)
);
CREATE TABLE COMPANY (
Company_ID NUMBER(4) PRIMARY KEY,
Company_Name VARCHAR2(20) NOT NULL,
Company_Country VARCHAR2(20) NOT NULL
);
CREATE TABLE FILM (
Film_ID NUMBER(4) PRIMARY KEY,
Title VARCHAR2(35) NOT NULL,
Year Date NOT NULL,
Language VARCHAR2(20),
Director_ID NUMBER(4) NOT NULL,
Actor_ID NUMBER(4) NOT NULL,
Company_ID NUMBER(4) NOT NULL,
Genre NUMBER(4) NOT NULL,
FOREIGN KEY (Director_ID) REFERENCES DIRECTOR(Director_ID),
FOREIGN KEY (Actor_ID) REFERENCES MAIN_ACTOR(Main_Actor_ID),
FOREIGN KEY (Company_ID) REFERENCES COMPANY(Company_ID)
);
因为您在删除查询中级联了约束,Director_ID、ACTOR_ID 和 Company_ID 的外键约束受到了影响,table 的外键约束也受到了影响s 也被删除了 FILM table 的创建查询无法找到其他 tables 到 link FOREIGN KEYS。您需要从下到上 运行 您的 CREATE 查询,以便最后创建具有其他 table 的外键的 FILM table 并且 REFERENTIAL KEYS 是 re-established .
代码如下:
DROP TABLE FILM CASCADE CONSTRAINTS;
DROP TABLE COMPANY CASCADE CONSTRAINTS;
DROP TABLE MAIN_ACTOR CASCADE CONSTRAINTS;
DROP TABLE DIRECTOR CASCADE CONSTRAINTS;
CREATE TABLE FILM (
Film_ID NUMBER(4) PRIMARY KEY,
Title VARCHAR2(35) NOT NULL,
Year Date NOT NULL,
Language VARCHAR2(20),
Director_ID NUMBER(4) NOT NULL,
Actor_ID NUMBER(4) NOT NULL,
Company_ID NUMBER(4) NOT NULL,
Genre NUMBER(4) NOT NULL,
FOREIGN KEY (Director_ID) REFERENCES DIRECTOR(Director_ID),
FOREIGN KEY (Actor_ID) REFERENCES MAIN_ACTOR(Main_Actor_ID),
FOREIGN KEY (Company_ID) REFERENCES COMPANY(Company_ID)
);
CREATE TABLE COMPANY (
Company_ID NUMBER(4) PRIMARY KEY,
Company_Name VARCHAR2(20) NOT NULL,
Company_Country VARCHAR2(20) NOT NULL
);
CREATE TABLE MAIN_ACTOR (
Main_Actor_ID NUMBER(4) PRIMARY KEY,
First_Name VARCHAR2(20) NOT NULL,
Last_Name VARCHAR2(20) NOT NULL,
Birthday Date NOT NULL,
Country VARCHAR2(20)
);
CREATE TABLE DIRECTOR (
Director_ID NUMBER(4) PRIMARY KEY,
Director_First_Name VARCHAR2(20),
Director_Last_Name VARCHAR2(20) NOT NULL,
Director_BD Date,
Country VARCHAR2(20) NOT NULL
);
我得到的错误是:
Line 6
Error report -
ORA-00942: table or view does not exist
00942. 00000 - "table or view does not exist"
所以我搜索了一下,但一无所获。当您使用错误的权限调用 select 时,似乎会发生所有类似的错误,但在这里对 CREATE TABLE 的简单调用给了我这个错误。
所以我尝试 删除 它并最终重新 创建 它但没有任何改变。
您在外部约束中引用了未创建的 table,因此请更改顺序。
第一个 table 没有外部约束,table 之后引用这些 table
DROP TABLE FILM CASCADE CONSTRAINTS;
DROP TABLE COMPANY CASCADE CONSTRAINTS;
DROP TABLE MAIN_ACTOR CASCADE CONSTRAINTS;
DROP TABLE DIRECTOR CASCADE CONSTRAINTS;
CREATE TABLE DIRECTOR (
Director_ID NUMBER(4) PRIMARY KEY,
Director_First_Name VARCHAR2(20),
Director_Last_Name VARCHAR2(20) NOT NULL,
Director_BD Date,
Country VARCHAR2(20) NOT NULL
);
CREATE TABLE MAIN_ACTOR (
Main_Actor_ID NUMBER(4) PRIMARY KEY,
First_Name VARCHAR2(20) NOT NULL,
Last_Name VARCHAR2(20) NOT NULL,
Birthday Date NOT NULL,
Country VARCHAR2(20)
);
CREATE TABLE COMPANY (
Company_ID NUMBER(4) PRIMARY KEY,
Company_Name VARCHAR2(20) NOT NULL,
Company_Country VARCHAR2(20) NOT NULL
);
CREATE TABLE FILM (
Film_ID NUMBER(4) PRIMARY KEY,
Title VARCHAR2(35) NOT NULL,
Year Date NOT NULL,
Language VARCHAR2(20),
Director_ID NUMBER(4) NOT NULL,
Actor_ID NUMBER(4) NOT NULL,
Company_ID NUMBER(4) NOT NULL,
Genre NUMBER(4) NOT NULL,
FOREIGN KEY (Director_ID) REFERENCES DIRECTOR(Director_ID),
FOREIGN KEY (Actor_ID) REFERENCES MAIN_ACTOR(Main_Actor_ID),
FOREIGN KEY (Company_ID) REFERENCES COMPANY(Company_ID)
);
因为您在删除查询中级联了约束,Director_ID、ACTOR_ID 和 Company_ID 的外键约束受到了影响,table 的外键约束也受到了影响s 也被删除了 FILM table 的创建查询无法找到其他 tables 到 link FOREIGN KEYS。您需要从下到上 运行 您的 CREATE 查询,以便最后创建具有其他 table 的外键的 FILM table 并且 REFERENTIAL KEYS 是 re-established .