Sql 无法添加外键,因为需要唯一约束

Sql 无法添加外键,因为需要唯一约束,sql,database,oracle,oracle-sqldeveloper,Sql,Database,Oracle,Oracle Sqldeveloper,我对使用OracleSQLDeveloper是一个全新的概念,现在正在从事一个大学项目。我一直在尝试向表中添加外键约束,表中已经包含外键作为属性,因此我使用ALTER,如下所示: alter table applies add constraint e_number foreign key (e_number) references student (e_number); 其中e_number是名为student的表中的主键。student表的e_编号具有主键约束,并且还具有一个自动生成的索引

我对使用OracleSQLDeveloper是一个全新的概念,现在正在从事一个大学项目。我一直在尝试向表中添加外键约束,表中已经包含外键作为属性,因此我使用ALTER,如下所示:

alter table applies
add constraint e_number foreign key (e_number)
references student (e_number);
其中e_number是名为student的表中的主键。student表的e_编号具有主键约束,并且还具有一个自动生成的索引,其中在indexes选项卡的UNIQUE列下显示为UNIQUE。每当我尝试为任何表创建外键时,每次都会出现相同的错误:

Error starting at line : 1 in command -
alter table applies
add constraint e_number foreign key (e_number)
references student (e_number)
Error report -
SQL Error: ORA-02264: name already used by an existing constraint
02264. 00000 -  "name already used by an existing constraint"
*Cause:    The specified constraint name has to be unique.
*Action:   Specify a unique constraint name for the constraint.

我有点困惑,已经在几个网站上读到了关于unique的文章,但还是不明白。调用ALTER时,我可以指定外键或指定唯一键。我是不是应该先改变“唯一”,然后再改变“外来”?我做错了什么?

这是因为您已经有一个名为e_number的密钥。尝试:

alter table applies
add constraint applies_student_e_number foreign key (e_number)
references student (e_number);

这是因为您已经有一个名为e_number的密钥。尝试:

alter table applies
add constraint applies_student_e_number foreign key (e_number)
references student (e_number);

是的,这就是我一直在做的。我在前面添加了不同的前缀,比如blah_u,但这是正确的方法吗?它不应该只有相同的名字吗。。并且仍然是fkreferences tablecolumn必须与引用的表/列名匹配。使用“添加约束”创建的键的名称\u可以\u命名\u此\u任何您想要的\u在数据库中必须是唯一的。在您的情况下,由于学生的主键名为e_number,因此您需要为applies.e_number外键使用不同的名称。非常感谢。这很有帮助。是的,这就是我一直在做的。我在前面添加了不同的前缀,比如blah_u,但这是正确的方法吗?它不应该只有相同的名字吗。。并且仍然是fkreferences tablecolumn必须与引用的表/列名匹配。使用“添加约束”创建的键的名称\u可以\u命名\u此\u任何您想要的\u在数据库中必须是唯一的。在您的情况下,由于学生的主键名为e_number,因此您需要为applies.e_number外键使用不同的名称。非常感谢。这很有帮助。请为约束尝试另一个名称,如果我没有记错的话,它不仅对于表而且对于整个架构都必须是唯一的。请为约束尝试另一个名称,如果我没有记错的话,它不仅对于表而且对于整个架构都必须是唯一的。