Trigger Problem

Kaladial

Neuer Benutzer
Beiträge
4
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
smile.png


mfg Kala
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.160
ich hab echt schon viel versucht und langsam verzweifel ich bitte helft mir
smile.png


mfg Kala

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>
 

Kaladial

Neuer Benutzer
Beiträge
4
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 ...
 

akretschmer

Datenbank-Guru
Beiträge
9.160
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 ...

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