IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

problème de l'execution d'un trigger


Sujet :

SQL Procédural MySQL

  1. #1
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut problème de l'execution d'un trigger
    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

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Commence par remplacer le case par un if :

    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
    	IF ( 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 IF;
    END;
    Il faudrait la structure des tables pour les autres erreurs.

  3. #3
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par Fred_34 Voir le message
    Commence par remplacer le case par un if :

    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
    	IF ( 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 IF;
    END;
    Il faudrait la structure des tables pour les autres erreurs.
    merci pour votre réponse

    voici les erreurs après la remplacement de case

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
     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 7
    mysql>         UPDATE mne SET seen=seen + 1, lastseen=NEW.lo, hidden= false WHERE crc=NEW.mne;
           ELSE
    ERROR 1054 (42S22): Unknown column 'NEW.mne' in 'where clause'
            INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON DUPLICATE KEY UPDATE lastseen=GREATEST(NEW.lo,lastseen), hidden= false;
    mysql>         UPDATE snare_eid SET seen=seen + 1, lastseen=NEW.lo, hidden=false WHERE eid=NEW.eid;
     
      END IF;
     
    ERROR 1054 (42S22): Unknown column 'NEW.eid' in 'where clause'
            END;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'
    mysql>        ELSE
        ->         INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON DUPLICATE KEY UPDATE 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 'ELSE
            INSERT INTO hosts(host,lastseen,seen) VALUES (NEW.host,NEW.lo,1) ON' at line 1
    mysql>
    mysql>   END IF;
    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 IF' at line 1
    mysql>
    mysql>         END;
    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

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    toutes les colonnes que tu décris avec new n'existent pas, c'est ce qu'il te dit...

    vérifie la structure de ta table counts
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    salut,

    toutes les colonnes que tu décris avec new n'existent pas, c'est ce qu'il te dit...

    vérifie la structure de ta table counts
    merci pour votre réponse
    main les colonnes sont existe
    tabler logs

    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
    17
    +----------+---------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+
    | Field    | Type                                                                                                                | Null | Key | Default             | Extra          |
    +----------+---------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+
    | id       | bigint(20) unsigned                                                                                                 | NO   | PRI | NULL                | auto_increment |
    | host     | varchar(128)                                                                                                        | NO   | MUL | NULL                |                |
    | facility | enum('0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23') | NO   | MUL | NULL                |                |
    | severity | enum('0','1','2','3','4','5','6','7')                                                                               | NO   | MUL | NULL                |                |
    | program  | int(10) unsigned                                                                                                    | NO   | MUL | NULL                |                |
    | msg      | varchar(2048)                                                                                                       | NO   |     | NULL                |                |
    | mne      | int(10) unsigned                                                                                                    | NO   | MUL | NULL                |                |
    | eid      | int(10) unsigned                                                                                                    | NO   | MUL | 0                   |                |
    | suppress | datetime                                                                                                            | NO   | MUL | 2010-03-01 00:00:00 |                |
    | counter  | int(11)                                                                                                             | NO   |     | 1                   |                |
    | fo       | datetime                                                                                                            | NO   | MUL | NULL                |                |
    | lo       | datetime                                                                                                            | NO   | PRI | NULL                |                |
    | notes    | varchar(255)                                                                                                        | NO   |     | NULL                |                |
    +----------+---------------------------------------------------------------------------------------------------------------------+------+-----+---------------------+----------------+
    table hosts

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +----------+------------------+------+-----+---------+----------------+
    | Field    | Type             | Null | Key | Default | Extra          |
    +----------+------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | host     | varchar(128)     | NO   | UNI | NULL    |                |
    | lastseen | datetime         | NO   |     | NULL    |                |
    | seen     | int(10) unsigned | NO   |     | 1       |                |
    +----------+------------------+------+-----+---------+----------------+
    merci d'avance

  6. #6
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    mais moi je te parle de ta table counts... c'est sur elle que porte le trigger...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  7. #7
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par ericd69 Voir le message
    mais moi je te parle de ta table counts... c'est sur elle que porte le trigger...
    le nom counts c'est le nom du trigger que je vais créer et non pas le nom d'une tables
    merci d'avance

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    On peut avoir l'INSERT qui provoque l'erreur ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    On peut avoir l'INSERT qui provoque l'erreur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TRIGGER counts
    AFTER INSERT ON logs
    FOR EACH ROW
    BEGIN
    	IF ( 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;
     
    END IF;
    END;
    merci d'avance

  10. #10
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Non ça c'est le TRIGGER. Moi je demandais la requête [codeinline=SQL]INSERT INTO logs[/code] qui lance le trigger !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  11. #11
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Non ça c'est le TRIGGER. Moi je demandais la requête [codeinline=SQL]INSERT INTO logs[/code] qui lance le trigger !
    j'ai connecter à ma base de donnée

    mysql -u root - p mabase

    ensuite sous mysql > j'ai copier le trigger

    merci d'avance

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Euh... tu sais ce que c'est qu'un trigger ?

    C'est un programme qui se déclenche lorsqu'on exécute une requête d'insertion, de modification ou de suppression.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER counts
    AFTER INSERT ON logs
    Ceci signifie que le trigger nommé "counts" va se déclencher chaque fois qu'une requête d'insertion sera faite sur la table "logs".

    Autrement dit, si je lance ce genre de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO logs (/* les colonnes à alimenter */)
    VALUES (/* les valeurs à donner aux colonnes */)
    Le trigger va s'exécuter.

    Ce n'est pas une procédure stockée qui peut être lancée indépendamment d'une requête d'action.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Euh... tu sais ce que c'est qu'un trigger ?

    C'est un programme qui se déclenche lorsqu'on exécute une requête d'insertion, de modification ou de suppression.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE TRIGGER counts
    AFTER INSERT ON logs
    Ceci signifie que le trigger nommé "counts" va se déclencher chaque fois qu'une requête d'insertion sera faite sur la table "logs".

    Autrement dit, si je lance ce genre de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO logs (/* les colonnes à alimenter */)
    VALUES (/* les valeurs à donner aux colonnes */)
    Le trigger va s'exécuter.

    Ce n'est pas une procédure stockée qui peut être lancée indépendamment d'une requête d'action.
    merci pour votre réponse ma question c'est comment alors je peut l'exécuter
    merci d'avance

  14. #14
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    je crois que j'ai compris ce qui ne va pas, tu utilise pas delimiter pour empecher l'interprétation des instruction dans le trigger...
    essaye:
    Code sql : 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
    17
    delimiter $$
    CREATE TRIGGER counts
    AFTER INSERT ON logs
    FOR EACH ROW
    BEGIN
    	IF ( 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 IF;
    END$$
    delimiter ;
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  15. #15
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Ce que ericd69 vient d'indiquer te permettra d'enregistrer le trigger dans la base de données. En gros, tu enregistres le programme.

    Ensuite, pour que ce trigger soit exécuté, comme déjà dit, il faut faire une requête INSERT INTO logs.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de mise à jour via un trigger
    Par clement42 dans le forum Sybase
    Réponses: 4
    Dernier message: 17/01/2007, 10h29
  2. problème d'update dans une fonction trigger (before)
    Par ctobini dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 17h08
  3. Problème d'execution d'un trigger
    Par berceker united dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 25/06/2006, 04h22
  4. Réponses: 4
    Dernier message: 01/05/2006, 22h53
  5. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo