2012-05-01 7 views
0

私は単なる一連のドロップテーブルであり、テーブルを作成するスクリプトを実行しようとしています。コンパイルは実行されますが、次のエラーが表示されます。ORA-00942表またはビューが存在しません。彼らは存在してはいけない私はそれらを作成しようとしている!なぜこれが起こっているのか、誰でも知っていますか?私はコマンドラインではなく、Oracleインターフェイスを使用しています。メモ帳でコードを作成し、Oracleにアップロードしました。次に、Oracle内でスクリプトを保存して実行します。表示結果をクリックすると、エラーが表示されます。なぜこのOracle 10g XEスクリプトは外部キーを持つテーブルを生成しませんか?

編集:作成されていない外部キーを持つのはテーブルだけです。

これは私のコードからの抜粋です:

CREATE TABLE PricePlans (
plan_id NUMBER(3) NOT NULL, 
plan_name VARCHAR2(15) NOT NULL, 
plan_desc VARCHAR2(30) NOT NULL, 
plan_duration_months NUMBER(2) NOT NULL, 
plan_cost NUMBER(4) NOT NULL, 
CONSTRAINT pk_planid PRIMARY KEY (plan_id) 
); 

DROP TABLE Classes; 
CREATE TABLE Classes (
class_id NUMBER(3) NOT NULL, 
class_name VARCHAR2(30) NOT NULL, 
class_desc VARCHAR2(30) NOT NULL, 
class_facility NUMBER(2) NOT NULL, 
class_instructor NUMBER(5) NOT NULL, 
class_cost NUMBER(2) NOT NULL, 
CONSTRAINT pk_classid PRIMARY KEY (class_id), 
CONSTRAINT fk_classfacility 
    FOREIGN KEY (class_facility) 
    REFERENCES Facilities(facility_id), 
CONSTRAINT fk_classinstructor 
    FOREIGN KEY (class_instructor) 
    REFERENCES Employees(emp_id) 
); 

DROP TABLE Facilities; 
CREATE TABLE Facilities (
facility_id NUMBER(2) NOT NULL, 
facility_name VARCHAR(15) NOT NULL, 
facility_manager NUMBER(4) NOT NULL, 
CONSTRAINT pk_facilityid PRIMARY KEY (facility_id); 
CONSTRAINT fk_facilitymanager 
    FOREIGN KEY (facility_manager) 
    REFERENCES Manager(manager_id) 
); 

答えて

2

私はあなたのクエリ内のDROP TABLE文が存在しないテーブルを削除しようとしていると信じています。

スクリプトから次の行を削除します。

DROP TABLE Classes; 

DROP TABLE Facilities; 

表はDROP TABLE文を実行する前に存在するかどうかを確認することができます。ここであなたに役立ついくつかの答えがあります。

Oracle: If Table Exists

Check if table exists in the database - PL SQL

UPDATE

クラスのTABLE CREATE文を、外部キーfk_classfacilityは、テーブルに後から作成されている施設を、参照しています。 CREATE TABLEステートメントを切り替えてみてください。最初にFacilitiesテーブルを作成し、Classesテーブルを作成します。

制約で参照されている他のすべてのテーブルが既に存在すると仮定します。

+0

これは修正されていません。 create tableスクリプトを実行しても同じエラーが発生する – adohertyd

関連する問題