Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Trigger Problem

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Kaladial, 14 August 2013.

  1. Kaladial

    Kaladial Neuer Benutzer

    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 [​IMG]

    mfg Kala
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Auch wenn ich MySQL nicht nutze - via Copy&Paste in MySQL geworfen und kein Fehler:

    Code:
    mysql> create table marktplatz_user (name text, incomesum int, id int, aktdatum date);
    Query OK, 0 rows affected (0.06 sec)
     
    mysql> DROP TRIGGER IF EXISTS `InsUser`;
    Query OK, 0 rows affected, 1 warning (0.06 sec)
     
    mysql> DELIMITER $$
    mysql>
    mysql> 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;
        -> $$
    Query OK, 0 rows affected (0.09 sec)
     
    mysql>
    
     
  3. Kaladial

    Kaladial Neuer Benutzer

    jup du hast vorraussichtlich kein mysql v5.1.66 mit einer anderen mysql version hab ich diesen trigger ja geschrieben und da funktioniert er nur leider auf dieser version mag er net ...
     
  4. akretschmer

    akretschmer Datenbank-Guru

    5.1.69. MySQL schafft es, in unterschiedlichen Bugfix-Releases einer Major-Version unterschiedliches Verhalten zu realisieren, so bleibt es immer schön spannend...
     
  5. Kaladial

    Kaladial Neuer Benutzer

    hmmm und ne lösungsidee?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Wenn es an der Version liegt, liegt die Lösung doch auf der Hand, oder?

    IIRC hat die 5.1.66 noch einige weitere Bugs.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden