简体   繁体   中英

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.
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. 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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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