0

Oracle Application Express for Oracle 11g の使用

既存のテーブルに外部キー制約を追加します。

表:コミュニケーション

COMMUNICATION-ID      NUMBER        
COMMUNICATIONTYPE_ID  VARCHAR2(6)   
CONTACT_ID            NUMBER         
COMMUNICATIONVALUE    VARCHAR2(40)

表: COMMUNICATIONTYPE

COMMUNICATIONTYPE-ID VARCHAR2(6)


SQL コマンド インターフェイスで次の SQL を使用する

ALTER TABLE COMMUNICATION
ADD CONSTRAINT FK_COMMUNICATIONTYPE
FOREIGN KEY (COMMUNICATIONTYPE_ID)
REFERENCES COMMUNICATIONTYPE(COMMUNICATIONTYPE-ID)

以下を返します。

ORA-00904: : 識別子が無効です

これがこれ以上簡単になるとは思いませんでした。一体何がうまくいかないのでしょうか?

4

2 に答える 2

1

フィールドの名前はCOMMUNICATIONTYPE-IDですか?

-は特別な意味を持つため、通常は識別子では使用されません。

私があなたなら、列の名前を変更しますCOMMUNICATIONTYPE_ID

識別子で使用するには、常にその識別子を二重引用符で囲む必要があります。

ALTER TABLE COMMUNICATION
ADD CONSTRAINT FK_COMMUNICATIONTYPE
FOREIGN KEY (COMMUNICATIONTYPE_ID)
REFERENCES COMMUNICATIONTYPE("COMMUNICATIONTYPE-ID")
于 2013-05-03T13:17:14.603 に答える
1

COMMUNICATIONTYPE(COMMUNICATIONTYPE-ID)

Oracle 名ではダッシュは無効です。アンダースコアを入力するつもりだったと思います。簡単にできます。

COMMUNICATION テーブルの DDL として、create tableスクリプトと同じタイプミスも失敗した可能性があります。したがって、エラーは複数の場所でスローされた可能性があります。

于 2013-05-03T13:17:49.333 に答える