无法使用 ALTER TABLE 添加 FOREIGN KEY 约束

Posted

技术标签:

【中文标题】无法使用 ALTER TABLE 添加 FOREIGN KEY 约束【英文标题】:Cannot add FOREIGN KEY constraint using ALTER TABLE 【发布时间】:2018-03-18 14:42:12 【问题描述】:

大家,我对 SQL 比较陌生,我目前正在使用 Oracle Live SQL 测试我的数据库表。我有一个名为 Customer 的表和一个名为 Contact 的表。在 Contact 表中,我试图将 Customer_ID 列的 FOREIGN KEY 约束添加到我的 Contact 表中,但不断收到 ORA-00904: "CUSTOMER_ID": invalid identifier, error using the code below:

ALTER TABLE Contact ADD FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID)

任何帮助将不胜感激。

【问题讨论】:

您的联系人表中有 Customer_ID 字段吗? 不,我的客户表中有一个 Customer_ID 列 在 Contact id 中你有哪个列名? .add 你的架构 .. + 请显示您的表格的 ddl 并描述您要编码的关系。 【参考方案1】:

大概您在contact 中没有Customer_Id 列。所以试试这个:

ALTER TABLE Contact ADD Customer_Id number;  -- the type is a guess

ALTER TABLE Contact ADD FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID);

【讨论】:

哇我简直不敢相信我什至忘记将列 Customer_ID 添加到联系人表中。非常感谢,这解决了这个问题。【参考方案2】:

因此,根据您问题的 cmets,您的联系人表中没有 Customer_ID 列。外键的定义是你在两个表中都有你想要引用的列。

ALTER TABLE Contact ADD Customer_ID int;
ALTER TABLE Contact ADD FOREIGN KEY (Customer_ID) REFERENCES Customer(Customer_ID);

【讨论】:

感谢您的回复。你说得对,我忘了在 Contact 表中添加一个名为 Customer_ID 的列名

以上是关于无法使用 ALTER TABLE 添加 FOREIGN KEY 约束的主要内容,如果未能解决你的问题,请参考以下文章

在某些情况下,ALTER TABLE 无法按预期工作

RODBC:无法使用 ALTER TABLE 命令指定架构

sql [ALTER TABLE]要(1)添加,删除或修改列,或(2)在现有表中添加和删除各种约束。 #Syntax #Alter_table

如何用oracle里面的alter table语句去添加一个列约束

使用 ALTER TABLE 添加新列后 H2 数据库插入数据异常

如果我要添加的列具有我创建的类型,是不是可以使用 alter table 添加列?