2016-04-05 14 views
1

Also ich habe an diesem Code für ein paar Tage gearbeitet und ich kann nicht herausfinden, warum ich Fehler bekomme. Dies sind die Fehler, die ich bin immer:Ich bekomme immer Fehler auf meinem Code SQL Oracle

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

und

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

ich den Code enthalten habe, die ich geschrieben habe. Das Symbol "..." symbolisiert nicht wichtige Informationen aus der von mir erstellten Tabelle, z. B. "DoctorFirstName". Kann mir jemand helfen, herauszufinden, wo ich mich verpfeife? Vielen Dank!

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)); 
+1

Haben alle 'DROP' Anweisungen ausführen, ohne Fehler? Versuchen Sie, sie mit 'drop table ... cascade constraints' fallen zu lassen. Vielleicht haben Sie andere Tabellen in Ihrem Schema, die diesen FK-Namen verwenden. Nachdem Sie alle Tabellen gelöscht haben, führen Sie 'select table_name, constraint_name, constraint_type von user_constraints' aus, um zu überprüfen, ob noch weitere Einschränkungen in Ihrem Schema vorhanden sind. –

Antwort

1

Durch einfaches Löschen der Tabelle werden die Einschränkungen nicht entfernt. Sie haben also noch Einschränkungen. Sie sollten die Einschränkungen und Indizes löschen. Überprüfen Sie diesen Link aus:

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

Referenz den unten stehenden Link für dropping Tabellen und die Einschränkung in einer Anweisung (CASCADE CONSTRAINTS)

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

+0

Vielen Dank! Ich habe versucht, die ALTER TABLE Arzt DROP CONSTRAINT HospitalID_fk und ich habe diesen Fehler: SQL-Fehler: ORA-00942: Tabelle oder Ansicht existiert nicht 00942. 00000 - "Tabelle oder Ansicht existiert nicht" – user3583313

+0

Wenn Sie noch laufen der Fehler, Sie könnten versuchen, die Tabellen erneut zu erstellen, dann versuchen Sie, Einschränkungen zu löschen –

+0

Löschen einer Tabelle ** wird ** alle Fremdschlüssel löschen. Wenn die Tabelle _references_ andere Tabellen enthält, werden diese FKs automatisch gelöscht. Wenn die Tabelle von anderen _referenced_ wird, können Sie die Tabelle nur mit 'drop table ... cascade constraints' löschen. –

Verwandte Themen