2016-03-30 2 views
-1

ich Oracle SQL Developer bin mit, unten ist die Störung, die ich erhalten:Oracle SQL-Entwickler - warum kann ich nicht die Zeile aus den Tabellen, die ich auf löschen kaskadieren und einen ungültigen Tabellenname Fehler erhalten löschen?

Error report - SQL Error: ORA-00903: invalid table name 00903. 00000 - "invalid table name"

Hier ist mein Code:

ALTER TABLE PCASE 
    DROP CONSTRAINT PCASE_Participant_FK; 

ALTER TABLE PCASE 
    ADD CONSTRAINT PCASE_Participant_FK 
    FOREIGN KEY (PartID) 
    REFERENCES Participant (PartID) 
    ON DELETE CASCADE; 


ALTER TABLE Meeting 
    DROP CONSTRAINT Meeting_PCASE_FK; 

ALTER TABLE Meeting 
    ADD CONSTRAINT Meeting_PCASE_FK 
    FOREIGN KEY (PCaseNo) 
    REFERENCES PCASE (PCaseNo) 
    ON DELETE CASCADE; 


ALTER TABLE MPlan 
    DROP CONSTRAINT MPlan_Meeting_FK; 

ALTER TABLE MPlan 
    ADD CONSTRAINT MPlan_Meeting_FK 
    FOREIGN KEY (PCaseNo, MeetingNo) 
    REFERENCES Meeting (PCaseNo, MeetingNo) 
    ON DELETE CASCADE; 


ALTER TABLE Laboratory 
    DROP CONSTRAINT Laboratory_MPlan_FK; 

ALTER TABLE Laboratory 
    ADD CONSTRAINT Laboratory_MPlan_FK 
    FOREIGN KEY (MPlanNo) 
    REFERENCES MPlan (MPlanNo) 
    ON DELETE CASCADE; 


ALTER TABLE Diary 
    DROP CONSTRAINT Diary_MPlan_FK; 

ALTER TABLE Diary 
    ADD CONSTRAINT Diary_MPlan_FK 
    FOREIGN KEY (MPlanNo) 
    REFERENCES MPlan (MPlanNo) 
    ON DELETE CASCADE; 

COMMIT; 

SELECT * 
    FROM Participant 
    WHERE PartID=12345; 

DELETE * 
    FROM Participant 
    WHERE PartID=12345; 

Ich habe gerade die FKs der Kind-Tabellen als ON DELETE CASCADE, aber es funktioniert nicht arbeiten. Ich habe eine andere Methode wie unten versucht, bekomme aber den gleichen Fehler.

DELETE * 
FROM Participant p, PCASE pc, Meeting m, MPlan mp, Laboratory l 
WHERE p.PartID=pc.PartID 
AND pc.PCaseNo=m.PCaseNo 
AND (m.PCaseNo=mp.PCaseNo 
    AND m.MeetingNo=mp.MeetingNo) 
AND mp.MPlanNo=l.MPlanNo 
AND p.PartID=12345; 


DELETE * 
FROM Participant p, PCASE pc, Meeting m, MPlan mp, Diary d 
WHERE p.PartID=pc.PartID 
AND pc.PCaseNo=m.PCaseNo 
AND (m.PCaseNo=mp.PCaseNo 
    AND m.MeetingNo=mp.MeetingNo) 
AND mp.MPlanNo=d.MPlanNo 
AND p.PartID=12345; 

Kann jemand helfen? Danke vielmals!

+1

verwenden Sie auch MySQL, Microsoft SQL Server? – Squirrel

+1

Sie sagen 'Hier ist mein Code:' aber nirgendwo in diesem Code erstellen Sie keine Tabellen, so ist es nicht verwunderlich, dass Sie einen ungültigen Tabellennamen erhalten. – MT0

+0

Hallo, ich benutze Oracle SQL Developer –

Antwort

1

Es ist DELETE FROM ..., nicht DELETE * FROM .... Ihre ungültige Syntax verwirrt den Parser von Oracle dahingehend, dass Sie eine leicht irreführende Fehlermeldung erhalten.

+0

Dank, ich habe gerade herausgefunden, dass der Grund ist. –

Verwandte Themen