代码之家  ›  专栏  ›  技术社区  ›  Rom

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

  •  0
  • Rom  · 技术社区  · 7 年前

    代码如下:

    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时,所有类似的错误似乎都会发生,但这里只需调用 创建表格 给我这个错误。
    所以我试着 它并最终重新- 创造 但一切都没有改变。

    2 回复  |  直到 7 年前
        1
  •  0
  •   ScaisEdge    7 年前

    您在外部约束中引用了未创建的表,因此请更改顺序。

    无外部约束的第一个表和引用这些表的后一个表

      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)
      );
    
        2
  •  0
  •   Chika    7 年前

    由于您在drop查询中级联到约束,Director\u ID、ACTOR\u ID和Company\u ID的外键约束受到影响,并且由于这些表也被删除,因此Create query for FILM表无法找到其他表来链接外键。您需要自下而上运行CREATE查询,以便最后创建包含其他表外键的FILM表,并重新建立引用键。