Bonjour,

j'ai ce fonction trigger que j'ai crée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TRIGGER counts
        AFTER INSERT ON logs
        FOR EACH ROW
        BEGIN
        CASE WHEN NEW.lo>DATE_SUB(NOW(), INTERVAL 1 HOUR) THEN
        INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON DUPLICATE KEY UPDATE seen=seen + 1, lastseen=GREATEST(NEW.lo,lastseen), hidden=false;
        UPDATE mne SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE crc=NEW.mne;
        UPDATE snare_eid SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE eid=NEW.eid;
        UPDATE programs SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE crc=NEW.program;
        INSERT INTO cache (name,value,updatetime) VALUES ('msg_sum',1,NEW.lo) ON DUPLICATE KEY UPDATE value=value + 1,updatetime=NEW.lo;
       ELSE
        INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON DUPLICATE KEY UPDATE lastseen=GREATEST(NEW.lo,lastseen), hidden= false;
        UPDATE snare_eid SET lastseen=GREATEST(NEW.lo,lastseen), hidden= false WHERE eid=NEW.eid;
 
        END;
le terminal de mysql m'affiche ces erreurs.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ERROR 1064 (42000): 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 'END' at line 1
mysql>        CREATE TRIGGER counts
    ->         AFTER INSERT ON logs
    ->         FOR EACH ROW
    ->         BEGIN
    ->         CASE WHEN NEW.lo>DATE_SUB(NOW(), INTERVAL 1 HOUR) THEN
    ->         INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON DUPLICATE KEY UPDATE seen=seen + 1, lastseen=GREATEST(NEW.lo,lastseen), hidden=false;
ERROR 1064 (42000): 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 6
mysql>         UPDATE mne SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE crc=NEW.mne;
ERROR 1054 (42S22): Unknown column 'NEW.mne' in 'where clause'
mysql>         UPDATE snare_eid SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE eid=NEW.eid;
ERROR 1054 (42S22): Unknown column 'NEW.eid' in 'where clause'
mysql>         UPDATE programs SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE crc=NEW.program;
ERROR 1054 (42S22): Unknown column 'NEW.program' in 'where clause'
mysql>         INSERT INTO cache (name,value,updatetime) VALUES ('msg_sum',1,NEW.lo) ON DUPLICATE KEY UPDATE value=value + 1,updatetime=NEW.lo;
ERROR 1054 (42S22): Unknown column 'NEW.lo' in 'field list'
aidez moi de les corriger
merci d'avance