MySQL Trigger ID Löschen

  • Hallo, ich erstelle gerade aus Übungszwecken eine Datenbank und muss einen Trigger einarbeiten. Es handelt sich um eine fiktive Firma, die für Kunden Kopierer wartet. Jeder Kunde hat eine ID und beliebig viele Kopierer. Ich dachte, ich erstelle einen Trigger, der, falls ein Kunde gelöscht wird, alle Kopierer als einer Untertabelle entfernt (wenn der Kunde die Firma verlässt, müssen seine Kopierer ja nicht mehr gewartet werden)

    Dies sieht so aus:

    CREATE TRIGGER kunde_geht
    before DELETE
    ON kunde
    FOR EACH ROW BEGIN
    DELETE FROM kunde_has_kopierer WHERE kunde_has_kopierer.kundennr=OLD.KNr;
    END;

    Ich bekomme immer Fehler, die die Synthax betreffen. Hinter OLD.Knr; bzw End; soll, bzw soll kein Semikolon sein, so die Fehlermeldung.

    Aber wahrscheinlich liegt es woanders dran?
    [Blockierte Grafik: http://s1.directupload.net/images/140128/wdpogzdg.png]

  • Super, vielen Dank! So einfach Dinge sind das, aber mir ist SQL noch so fremd, da ist es unüberschaubar :oops:
    Darf ich direkt noch eine Frage stellen? Ich bleibe mal hier in meinem Thread, damit nicht so viele andere durch meine Trigger-Probleme gestört sind:

    delimiter //

    CREATE TRIGGER naechste_Wartung AFTER INSERT ON rechnung
    FOR EACH ROW BEGIN
    IF ( rechnung.istBearbeitet=1) THEN
    (
    SELECT
    DATEADD(month, Wartungsinterval, naechsteWartung)
    FROM
    kunde_has_kopierer
    WHERE
    rechnung.Auftragsnr=kunde_erteilt_auftrag.ANr
    AND
    kunde_has_kopierer.seriennummer= kunde_erteil_auftrag.seriennummer
    )
    END IF;
    //

    delimiter ;


    Hier soll immer das Datum für eine nächste Wartung um die Anzahl der in Wartungsinterval hinterlegten Monate erhöht werden, sobald der Boolean in rechnung.isBearbeitet auf true gesetzt wird. Einmal weiß ich noch nicht, ob der Trigger so funktioniert; ich konnte ihn noch nicht testen, da ich wieder Prbleme mit der Synthax habe. Abwechselnd bekomme ich Meldungen, dass entweder ein ; oder ein ein END erwartet wird. Egal, wie ich es dreh und schiebe, der Code wird nicht fehlerfrei. Habe ich zu viele Klammern oder was falsch gemacht (und würde das so überhaupt funktionieren, dh, kann ich mittels einer Selectanweisung die Daten editieren?).

    Vielen, vielen lieben Dank für die aufmerksame Hilfe für mich Anfängerin!

  • ich habe eine App auf meinem Smartphone, die GPS-Einträge in einer SQLite-Datenbank speichert. Jetzt wollte ich mir die GPS-Einträge mal anschauen, habe aber folgendes Problem: Die Tabelle mit den GPS-Daten enthält viel weniger Einträge als erwartet. Die Datenbank-Datei ist ca. 6MB groß. Speichere ich alle Tabellen als Textdatei kommen die zusammmen nur auf ca. 100kB. Kann es sein, dass die Datenbank defekt ist, so dass die Tabellen irgendwie abgeschnitten sind? Oder wofür wird der restliche Speicherplatz benötigt? Neben den Tabellen sind in der Datenbank 10 Index-Objekte.