使用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 ::无效标识符
没想到这可能更简单。到底怎么会出错?
答案 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
脚本也可能失败。因此错误可能会被抛到多个地方。