![](/img/trans.png)
[英]Why the sql is giving result even if the column doesn't exist in the table?
[英]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.