簡體   English   中英

SQL:表或視圖不存在,為什么?

[英]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上的簡單調用中卻出現了此錯誤。
因此,我嘗試刪除它並最終重新創建它,但是沒有任何改變。

您在外部約束中引用了未創建的表,因此請更改順序。

沒有外來約束的第一個表和引用這些表的后表

  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的外鍵約束已受到影響,並且由於這些表也已刪除,因此“創建FILM表”查詢無法找到其他表來鏈接FOREIGN KEYS。 您需要自下而上運行CREATE查詢,以便最后創建對其他表具有FOREIGN KEYS的FILM表,並重新建立REFERENTIAL KEYS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM