无法向表中添加外键约束

时间:2016-05-15 09:39:38

标签: sql oracle foreign-keys

true <-> false

我正在尝试添加外键约束,但我不明白为什么会出现此错误:

  

最后一行的错误:
  ORA-00904:“CREDITSTATUS”:标识符无效

3 个答案:

答案 0 :(得分:0)

您正尝试在CREDITSTATUS表上为名为CUSTOMER的外键添加外键约束。但是,CUSTOMER表没有CREDITSTATUS的外键。

您必须在CUSTOMER中为CREDITSTATUS创建一个外键,然后重新运行最后一行以添加约束。

修改

使用ALTER TABLE将列添加到CUSTOMER:

ALTER TABLE CUSTOMER ADD CREDITSTATUS VARCHAR(20);

文档: http://www.techonthenet.com/oracle/tables/alter_table.php

答案 1 :(得分:0)

正如我在评论中指出的那样,您的(myclass.myenum)intvalue; 表格没有customer列。您首先必须添加它:

creditstatus

然后用你已经拥有的声明把它变成外键。

答案 2 :(得分:0)

您可以在一个语句中添加列和外键约束:

alter table customer add (
   creditstatus varchar2(20) constraint customer_fk_creditstatus references credit_term
   );

一些笔记。首先,我将列定义括在括号中。它可能没有它们,但官方语法似乎需要它们。 http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_3001.htm#i2103924

其次,在内联约束(在列级别定义,而不是在表级别),您可能不使用单词FOREIGN KEY。单词REFERENCES已标识约束类型。第三,如果您引用引用表的PRIMARY KEY,则不需要(但如果您愿意,可以)在引用表中命名引用列。如果您没有为该列命名,则默认情况下将使用所引用表的PRIMARY KEY - 在绝大多数情况下,无论如何都是这样。