Search code examples
sqloracle-databaseddlcreate-table

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.


Solution

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