简体   繁体   English

SQL:表或视图不存在,为什么?

[英]SQL : Table or view doesn't exist, why?

Here's the code : 这是代码:

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

and the error I get is : 我得到的错误是:

Line 6
Error report -
ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"

So I searched and I found nothing. 所以我搜寻了,但是什么也没找到。 All error like this seems to happen when you call a select with the wrong permissions but here on a simple call on CREATE TABLE gives me this error. 当您以错误的权限调用select时,似乎会发生所有此类错误,但是在CREATE TABLE上的简单调用中却出现了此错误。
So I tried to drop it and eventually re- create it but nothing changed. 因此,我尝试删除它并最终重新创建它,但是没有任何改变。

You refer in your foreign constraints to table that are not created so change the sequence. 您在外部约束中引用了未创建的表,因此请更改顺序。

First tables without foreign constraints and after table that refer to these tables 没有外来约束的第一个表和引用这些表的后表

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

Because you cascaded down to constraints in your drop query, the foreign key constraints for Director_ID, ACTOR_ID and Company_ID have been affected and also as those tables were also dropped the Create query for FILM table could not locate those other tables to link the FOREIGN KEYS. 因为您已级联到放置查询中的约束,所以Director_ID,ACTOR_ID和Company_ID的外键约束已受到影响,并且由于这些表也已删除,因此“创建FILM表”查询无法找到其他表来链接FOREIGN KEYS。 You need to run your CREATE queries from down to up so that the FILM table which has the FOREIGN KEYS to other tables be created last and the REFERENTIAL KEYS be re-established. 您需要自下而上运行CREATE查询,以便最后创建对其他表具有FOREIGN KEYS的FILM表,并重新建立REFERENTIAL KEYS。

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

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