我的代码SQL Oracle不断出错



所以我已经处理这段代码几天了,我不明白为什么会出现错误。这些是我得到的错误:

SQL Error: ORA-00904: "PATIENTID_FK": invalid identifier
00904. 00000 -  "%s: invalid identifier"

SQL Error: ORA-02264: name already used by an existing constraint
02264. 00000 -  "name already used by an existing constraint"

我已经包含了我写的代码。"…"表示我创建的表中不重要的信息,例如"DoctorFirstName"。有人能帮我弄清楚我在哪里搞砸了吗?非常感谢。

DROP TABLE HealthRecord;
DROP TABLE Patient;    
DROP TABLE Insurance;
DROP TABLE Doctor;
DROP TABLE Hospital;
DROP TABLE Prescription;
CREATE TABLE Insurance (
InsuranceID number,
...
CONSTRAINT InsuranceID_pk
PRIMARY KEY (InsuranceID));
CREATE TABLE Prescription (
PrescriptionID number,
...
CONSTRAINT PrescriptionID_pk
PRIMARY KEY(PrescriptionID));
CREATE TABLE Hospital (
HospitalID number,
...
CONSTRAINT HospitalID_pk
PRIMARY KEY(HospitalID));
CREATE TABLE Doctor (
DoctorID number,
...
HospitalID number,
CONSTRAINT DoctorID_pk
PRIMARY KEY(DoctorID),
CONSTRAINT HospitalID_fk
FOREIGN KEY (HospitalID)
REFERENCES Hospital (HospitalID));
CREATE TABLE Patient (
PatientID number,
...
InsuranceID number,
CONSTRAINT PatientID_pk
PRIMARY KEY (PatientID),
CONSTRAINT InsuranceID_fk
FOREIGN KEY (InsuranceID)
REFERENCES Insurance(InsuranceID));
CREATE TABLE HealthRecord(
RecordID number,
...
DoctorID number,
PrescriptionID number,
PatientID number,
CONSTRAINT RecordID_pk
PRIMARY KEY(RecordID),
CONSTRAINT DoctorID_fk
FOREIGN KEY (DoctorID)
REFERENCES Doctor (DoctorID),
CONSTRAINT PrescriptionID_fk
FOREIGN KEY (PrescriptionID)
REFERENCES Prescription (PrescriptionID),
CONSTRAINT PatientID_fk
FOREIGN KEY (PatientID_fk)
REFERENCES Patient(PatientID));

仅仅删除表并不能删除约束。所以你们的约束仍然存在。您应该删除约束和索引。查看此链接:

https://www.1keydata.com/sql/alter-table-drop-constraint.html

请参阅下面的链接,在一个语句中删除表和约束(CASCADE CONSTRAINTS)

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9003.htm

最新更新