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

标签 sql database oracle oracle-sqldeveloper

我刚刚开始使用 Oracle SQLDeveloper,现在正在处理一个大学项目。我一直尝试向我的表添加外键约束(它已经将外键作为属性保存),所以我像这样使用 ALTER:

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

其中 e_number 是名为 student 的表中的主键。学生表的 e_number 具有主键约束,并且还有一个自动生成的索引,在索引选项卡的 UNIQUENESS 列下显示为 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 时,我可以指定 FOREIGN 键或指定 UNIQUE 键。我应该先改变独特的,然后改变外国的吗?我做错了什么?

最佳答案

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

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

关于sql - 无法添加外键,因为需要唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22885281/

相关文章:

oracle - 在 Windows 上使用 sysdate Oracle 时时间不更新

mysql - 如何通过单个查询获取记录

python - SQLAlchemy 删除关联对象

mysql - Ubuntu : SQL time is not the same as current OS timezone

database - Delphi:如何以编程方式创建 Firebird 数据库

sql - 数据库:选择最后的非空条目

database - 根据数据签名对数据进行分类

sql - SQL查询结果如何存储以便快速访问?

sql - 在 sql 中将西欧字符集转换为土耳其语

sql - Oracle时间戳到sql server DateTime