Trigger Problem

  • moin

    ich hab ein problem mit meinem trigger
    ich benutz debian und mysql version 5.1.66
    wenn ich diesen trigger einbauen will bekomm ich immer die meldung:

    MySQL meldet: Dokumentation
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$$' at line 21

    DROP TRIGGER IF EXISTS `InsUser`;
    DELIMITER $$

    CREATE TRIGGER InsUser AFTER INSERT ON marktplatz_user
    FOR EACH ROW BEGIN

    SET @name = NEW.name;
    SET @incomesum = NEW.incomesum;
    SET @user_id = NEW.id;
    SET @aktdatum = CURDATE();

    CASE WHEN
    (SELECT id FROM marktplatz_weekdata WHERE user_id = @user_id and datum = CURDATE()) IS NULL
    THEN
    INSERT INTO marktplatz_weekdata ( id, user_id, datum, name, currentmoney) VALUES (NULL, @user_id, @aktdatum, @name, @incomesum);
    ELSE
    Set @idweekdata =(SELECT id FROM marktplatz_weekdata WHERE user_id = @user_id and datum = CURDATE());
    UPDATE marktplatz_weekdata SET currentmoney =@incomesum WHERE id = @idweekdata;
    END CASE;

    DELETE FROM `marktplatz_weekdata` WHERE datum < date_sub( CURDATE(), interval 7 day);

    END;
    $$

    ich hab echt schon viel versucht und langsam verzweifel ich bitte helft mir :)

    mfg Kala

  • das hilft mir net wirklich ... nur so nebenbei dieser trigger läuft genau so auf eienr anderen version einer mysql db ...
    ich versteh halt net wo hier der fehler ist auch die seite die du geschickt hast kannte ich schon und hatte sie auch schon durfforstet ob ich irgendwo nen fehler hab ...
    also etwas genauere hilfe wäre sinnvoller als dieses "lehrerhafte" getuhe ... bin kein 5 jähriges kind das mal eben nach nem lolli fragt ...

  • wie kommst du da drauf ?

    also nur als beispiel:
    DROP TRIGGER IF EXISTS `InsUser`;
    DELIMITER $$

    CREATE TRIGGER InsUser AFTER INSERT ON marktplatz_user
    FOR EACH ROW BEGIN

    SET @name = NEW.name;
    SET @incomesum = NEW.incomesum;
    SET @user_id = NEW.id;
    SET @aktdatum = CURDATE();

    END;
    $$

    diesen code ausführe funktioniert der trigger ...
    wie kann es dann an meinem DELIMITER liegen ?

  • Hab jetzt noch mal nachgelesen und den Code angesehen. Die Fehlermeldung 1064 ist eigentlich ohne Aussage aber der Hinweis mit der Zeile die ich nicht kenne sollte man schon näher untersuchen.

    Nimm mal die Backticks in dieser Zeile raus und entferne die leerzeichen vor und nach <

    SQL
    DELETE FROM `marktplatz_weekdata` WHERE datum < date_sub( CURDATE(), interval 7 day);


    Ansonsten stehe ich auch ziemlich auf den Schlauch gerade.

  • alles schon versucht ... hatte den trigger auch schon in einer zeile ... bringt nix