0

使用适用于 Oracle 11g 的 Oracle Application Express

向预先存在的表添加外键约束。

表:通讯

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

表:通信类型

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 回答