Fehler delete



  • Was bedeutet der Fehler ? Er betrifft Tabelle Author und Buch .

    java.sql.SQLIntegrityConstraintViolationException: DELETE in Tabelle 'AUTHOR' hat für Schlüssel (1) die Integritätsbedingung 'FK_BOOK001' für Fremdschlüssel verletzt. Die Anweisung wurde zurückgesetzt.



  • Es gibt noch einen Bucheintrag, wo der entsprechende Autor (als Foreign Key) eingetragen ist.



  • Ja die Tabelle Buch hat Autor_ID als Foreign Key drin. Aber wieso hindert mich das einen Eintrag in der Tabelle Autor zu löschen. Das ist ja krass oder.



  • Nein ... ist nicht krass. Das ist normal so!
    Genau dafür gibt es ja die Foreign Keys. Die sorgen dafür, dass deine Daten in der DB weiter Sinn ergeben. Sonst hättest du da auf einmal ein Buch in deiner Bücherliste mit einem Verweis auf einen Autor, den du nicht mehr in der DB hast.
    Da gibt es dann mehrere Möglichkeiten damit umzugehen.

    a) Löschen des Autors verbieten, solange irgendwelche Bücher mit diesem Autor "verknüpft" sind
    b) auch alle Bücher dieses Autors löschen ... Stichwort Cascade Delete
    c) DummyAutor Eintrag machen
    d) Foreign Key entfernen ... (sollte man wohl nicht machen ... wäre aber eine Möglichkeite mit diesem Problem um zu gehen)
    e) ... keine Ahnung was man sich hier noch alles ausdenken könnte ... ich denke a) und b) dürften die gängigen Varianten sein.


Log in to reply