无法使用外键创建表。错误:ORA-00904: : 无效标识符
Posted
技术标签:
【中文标题】无法使用外键创建表。错误:ORA-00904: : 无效标识符【英文标题】:Unable to create a table with foreign key. Error: ORA-00904: : invalid identifier 【发布时间】:2018-03-24 19:45:25 【问题描述】:我正在尝试在名为“country”的表中创建一个具有外键的表,该表如下所示:
CREATE TABLE country (
name varchar2(50),
region varchar2(60),
area number(10,0),
population number(11,0),
gdp number,
CONSTRAINT country_PK primary key (name)
);
每次我尝试在“城市”创建表中引用“国家”时,都会收到此错误 ORA-00904: : invalid identifier。有人可以告诉我我做错了什么吗?谢谢。
CREATE TABLE City(
CityName varchar2(50) not null,
CityCountry varchar2(60),
CityPopulation number(11,0),
IsCapital char(1),
CONSTRAINT CityName_pk PRIMARY KEY (CityName),
CONSTRAINT CityCountry_fk FOREIGN KEY (CityCountry) REFERENCES country (name),
);
【问题讨论】:
无效标识符是外键约束末尾多余的,
。省略它,您的外键将起作用。
在country
表中,您的PK 是name varchar2(50)
,而在City
表中,您的FK 是CityCountry varchar2(60)
- 尝试在两者中使用50 或60 - 即使这不是导致问题的原因也不是拥有不同类型大小的列是个好主意
【参考方案1】:
从 Country
表 DDL 的最后一行中删除尾随逗号 ,
CONSTRAINT CityCountry_fk FOREIGN KEY (CityCountry) REFERENCES country (name),
应该变成:
CONSTRAINT CityCountry_fk FOREIGN KEY (CityCountry) REFERENCES country (name)
【讨论】:
以上是关于无法使用外键创建表。错误:ORA-00904: : 无效标识符的主要内容,如果未能解决你的问题,请参考以下文章
Oracle DB - ORA-00904:选择时出现“无效标识符”错误
SQL 错误:ORA-00904: : 第 4 行中的标识符无效