2016-08-03 6 views
0
CREATE TABLE Emp OF Emp_t(eno PRIMARY KEY, edept REFERENCES Dept); 

PRIMARY KEYの近くに、期待しない構文エラーが表示されます。私はそれを解決する必要があります。Oracleで構文エラーが発生します

以下は、そのスキーマの残りのクエリです。

CREATE TYPE Emp_t AS OBJECT(eno number(4),ename varchar2(15),edept ref dept_t,salary number(8,2)); 
/

CREATE TYPE Dept_t AS OBJECT(dno number(2),dname varchar2(12),mgr ref emp_t); 
/

CREATE TYPE Proj_t AS OBJECT(pno number(4),pname varchar2(15),pdept ref dept_t,budget number(10,2)); 
/

CREATE TABLE Dept OF Dept_t(dno PRIMARY KEY, mgr REFERENCES Emp); 

CREATE TABLE Proj OF Proj_t(pno PRIMARY KEY, pdept REFERENCES dept); 

エラーは次のイメージのように表示されます。 @LostInAlabamaが示唆したように enter image description here

+0

は、あなたがそれらのいずれかを作成することができますテーブル、彼らはお互いを参照する? (型もそうですが、 'dept_t'は作成直後に有効ですので、' create table dept'によって暗黙的にコンパイルされなければなりません)。 –

+0

まず、すべてのタイプのクエリ文を実行できます。しかし、create tableを実行しようとすると、上記のエラーが発生します。 –

+0

テーブルを作成できませんでした。タイプを作成できるのは –

答えて

0

、あなたはテーブルを作成することができ、その後、円形の制約を追加:好ましく

CREATE TABLE Dept OF Dept_t(dno PRIMARY KEY); 
CREATE TABLE Proj OF Proj_t(pno PRIMARY KEY); 
CREATE TABLE Emp OF Emp_t(eno PRIMARY KEY); 

ALTER TABLE Dept MODIFY (mgr REFERENCES Emp); 

かを命名制約に:

ALTER TABLE Dept ADD (CONSTRAINT Dept_FK_Emp FOREIGN KEY (mgr) REFERENCES Emp); 
ALTER TABLE Emp ADD (CONSTRAINT Emp_FK_Dept FOREIGN KEY (edept) REFERENCES Dept); 
ALTER TABLE Proj ADD (CONSTRAINT Proj_FK_Dept FOREIGN KEY (pdept) REFERENCES Dept); 
関連する問題