SQL 错误:“名称已被现有约束使用”

问题描述 投票:0回答:2

我正在尝试创建一些表并设置外键,但我一直遇到外键问题。

早些时候我创建了下表,它工作正常

CREATE TABLE inpatient
(PatientNo varchar(6) NOT NULL,
WardNo number(2),
BedNo number(3) NOT NULL,
OnWaitingList date, 
WardRequired varchar(25), 
ExpectStayInDays number(4), 
DatePlaced date, 
DateLeave date, 
ActualLeave date, 

constraint PatientFK foreign key (PatientNo)     references Patient (patientNo),

constraint bedFK foreign key (BedNo)     references Bed (bedNo));

请注意最后 2 行使用 PatientFK。

然后我继续创建另一个表

CREATE TABLE NOK
(PatientNo varchar(6)   NOT NULL,
NOKFullName   varchar(25), 
NOKRelationship   varchar(25), 
NOKTelephone   number(11), 
NOKStreetAddress   varchar(25), 
NOKSuburb   varchar(25), 
NOKState   char(2), 
NOKPostCode   number(4), 


constraint patientFK foreign key (PatientNo)
references Patient (patientNo));

我收到以下错误消息

错误报告: SQL 错误:ORA-02264:现有约束已使用名称 02264. 00000 - “名称已被现有约束使用” *原因:指定的约束名称必须是唯一的。 *操作:为约束指定唯一的约束名称。

我不知道如何解决它或找到可以建议解决方案的类似示例。

sql foreign-keys constraints
2个回答
3
投票

约束的名称(在本例中为 PatientFK)在数据库中是唯一的。您已经使用过一次,因此当您尝试再次使用它时,您会收到一条错误消息。只需为您在

NOK
表上设置的约束指定一个不同的名称即可:

也许:

constraint patientFK_nok foreign key (PatientNo)

0
投票

在尝试从 Oracle SQL Developer 创建新表时,我遇到了类似的问题。

我的问题是,我在命名表之前选择了列作为主键,因此主键约束称为

TABLE1_ID
(已采用)。显然,当我更改表名称时,Oracle SQL Developer 并没有自动更改主键名称。

要修复此问题,我必须取消选择作为主键的列并重新选择它们。

© www.soinside.com 2019 - 2024. All rights reserved.