更改Oracle表:无效的标识符

时间:2013-05-03 13:12:46

标签: sql oracle foreign-keys alter

使用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 ::无效标识符

没想到这可能更简单。到底怎么会出错?

2 个答案:

答案 0 :(得分:1)

您确定该字段被称为COMMUNICATIONTYPE-ID吗?

-通常不会在标识符中使用,因为它具有特殊含义。

如果我是你,我会重命名专栏COMMUNICATIONTYPE_ID

要在标识符中使用它,您需要始终用双引号括起该标识符。

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

答案 1 :(得分:1)

COMMUNICATIONTYPE(COMMUNICATIONTYPE-ID)

Dash在Oracle名称中无效。我想你打算输入一个下划线。它很容易完成。

作为COMMUNICATION表的DDL,同样的错误create table脚本也可能失败。因此错误可能会被抛到多个地方。