2016-03-29 7 views
0

生徒用テーブルを作成しようとするとエラーが発生します。私は外来キーでエラーが発生しています。それは私が無効な識別子を持っていると述べていますが、私はスタッドタイプのテーブルを確認するためにダブルチェックしました。違いはありません。どんな助けもありがとう。私の外部キーが無効な識別子を取得するのはなぜですか?

CREATE TABLE STUDENT 
    (STUDID VARCHAR2(10) NOT NULL, 
    STUDNAME VARCHAR2(30), 
    STUDADDRESS VARCHAR2(30), 
    STUDTELNO VARCHAR2(17), 
    CONSTRAINT PKSTUD PRIMARY KEY(STUDID), 
    CONSTRAINT FKSTYPE FOREIGN KEY(STUDTYPE) REFERENCES STUDTYPE(STUDTYPE) ON  DELETE CASCADE)); 

エラー:ORA-00904: "STUDTYPE":無効な識別子

CREATE TABLE STUDTYPE 
(STUDTYPE VARCHAR2(30) NOT NULL, 
CONSTRAINT PKSTYPE PRIMARY KEY(STUDTYPE)); 
+0

「STUDENT」に「STUDTYPE」という名前の列はありません。制約は列を作成するのではなく制約を作成するだけです。列を個別に定義する必要があります。 –

+2

また、 'ON DELETE CASCADE'を使うことに注意してください。つまり、学生タイプを削除すると、そのタイプの学生もすべて黙って削除されます。 –

+0

私はこの愚かな間違いをしたと信じていない! – Chris

答えて

0

あなたは学生テーブルのSTUDTYPE列を持つ必要があります。したがって、生徒用テーブルの作成スクリプトは次のようになります。

CREATE TABLE STUDENT 
    (STUDID VARCHAR2(10) NOT NULL, 
    STUDTYPE VARCHAR2(30), 
    STUDNAME VARCHAR2(30), 
    STUDADDRESS VARCHAR2(30), 
    STUDTELNO VARCHAR2(17), 
    CONSTRAINT PKSTUD PRIMARY KEY(STUDID), 
    CONSTRAINT FKSTYPE FOREIGN KEY(STUDTYPE) REFERENCES STUDTYPE(STUDTYPE) ON  DELETE CASCADE)); 
関連する問題