2012-10-08 6 views
6

私はORA-00907:右括弧が欠落しています。表の作成中にエラーが発生しましたか?

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
FOREIGN KEY(emp_name) REFERENCES employee(emp_name), 
FOREIGN KEY(comp_name) REFERENCES company(comp_name) 
) 
、今、私はいくつかの外部キーを使用して別のテーブルを作成しようとしています

CREATE TABLE employee 
(
emp_name VARCHAR(20) NOT NULL, 
street VARCHAR(50) NOT NULL, 
city VARCHAR(20) NOT NULL, 
PRIMARY KEY(emp_name) 
) 

CREATE TABLE company 
(
comp_name VARCHAR(20) NOT NULL, 
city VARCHAR(20) NOT NULL, 
PRIMARY KEY(comp_name) 
) 

、私は次のクエリを使用して2つのテーブルを作成しているオラクル、 に新しいです

エラーが発生しました:ORA-00907:右かっこがありません

私はまた

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
constraint wemployee FOREIGN KEY(emp_name) REFERENCES employee(emp_name), 
constraint wcompany FOREIGN KEY(comp_name) REFERENCES company(comp_name) 
) 

と試みたが、同じエラーを取得しています。 私はどこで間違いをしていると言うことができますか?

答えて

3

を私はノーですオラクルの専門家ですが、salary int(10) NOT NULL(10)と指定することができますか?

+0

それは仲間を得た!..ありがとう:) @pilotcam – Nina

1

FOREIGN KEY一部をドロップしてみてくださいテーブル作成文の残りの部分とインデックスをインラインで作成する場合:

CREATE TABLE works 
(
emp_name varchar(20) NOT NULL, 
comp_name varchar(20) NOT NULL, 
salary int(10) NOT NULL, 
emp_name REFERENCES employee(emp_name), 
comp_name REFERENCES company(comp_name) 
) 

の詳細については、この質問を参照してください:

ORA-00907: missing right parenthesis

+0

同じエラーが発生します。とにかくありがとうございました。 パイロットカメラから回答が得られました。 – Nina

1

ここでは、constriantsでテーブルを作成する2つの方法があります。表部門作成

1) ( をDEPTNO数(5)主キー、 DEPTNAMEのVARCHAR2(30)、 EMPNO番号(5)を参照のEMP(EMPNO))。作成

2)表部門( DEPTNO数(5)、 DEPTNAMEのVARCHAR2(30)、 EMPNO番号(5)は、主キー(DEPTNO)pkey_deptno 制約、外部キー(EMPNO)fkey_empno 制約は、EMPを参照します(empno));

2

1:idとtestdataという2つの列を持つ "test"という名前のテーブルが必要です。 (これは単にダム簡単な例であるので、私はIDのいずれかの制約を指定する気はありません。)

create table test (id number, testdata varchar2(255)); 

2:次の我々は我々のテストテーブルのid番号に使用するシーケンスを作成します。

create sequence test_seq 
start with 1 
increment by 1 
nomaxvalue; 
あなたはあなたが開始する任意の番号に「1で始まり、」変化する可能性が

(例えば、あなたはすでにテーブル内の213個のエントリを持っている、あなたは、あなたの214番目のエントリのためにこれを使い始めるスタート」と交換したい場合214インチ)。 「増分1」句がデフォルトであるため、省略することができます。また、ID番号間でn-1個の数値をスキップしたい場合は、「n刻みでインクリメントする」と置き換えることもできます。 「nomaxvalue」は、ある時点でリセットするのではなく、永久に増分し続けるように指示します.i(Oracleにはどれくらいの大きさの制限がありますが、その限界がわかりません)

3:シーケンスから次の番号を自動的にidカラムに挿入するトリガーを作成する準備ができました。

create trigger test_trigger 
before insert on test 
for each row beginselect test_seq.nextval into :new.id from dual; 
end; 
/
関連する問題