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 :

Probleme Trigger mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 934
    Points : 348
    Points
    348
    Par défaut Probleme Trigger mysql
    Bonjour,
    j'ai un petit soucis, j'ai créé un trigger, qui doit se déclenche après la mise à jour d'une table, mais je n'arrive pas à le créé sous phpmyadmin, pourtant j'en ai créé un juste avant , sur une insertion et ça marche nickel mais celui là il ne veut pas l'enregsitrer

    Voici mon trigger que j'essaye de créé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE table2 t2
    SET 
    t2.objet= t1.value
     
    FROM table2 t2  <-- ligne 5
     
    inner join table1 t1 ON t1.identifiant=t2.sujet_identifiant
    where t1.objet_id=4;
    et mysql me dit " mysql à repondu 1064 : erreur de syntaxe pres de FROM table2 inner joint etc..... à la ligne 5 ( voir code ci dessus )

    un grand merci à vous

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    De mémoire, avec UPDATE, la jointure s'exprime plutôt de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table2 t2
    INNER JOIN table1 t1 ON t1.identifiant = t2.sujet_identifiant
    SET t2.objet = t1.value
    WHERE t1.objet_id = 4;
    Pas de FROM puisque la première table est déjà citée dans la partie UPDATE.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 469
    Points : 19 465
    Points
    19 465
    Par défaut
    Salut à tous.

    @ android59 : ce que vous nous donnez n'est pas un déclencheur.
    Il y a une syntaxe à respecter, ce que vous ne faites pas !

    Voici un exemple d'utilisation d'un déclencheur avec mise à jour d'une autre table.
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `tabone`
    --------------
     
    --------------
    CREATE TABLE `tabone`
    ( `id`   INTEGER UNSIGNED  NOT NULL auto_increment PRIMARY KEY,
      `lib`  VARCHAR(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `tabone` (`lib`) values  ('un'),('zwei'),('trois')
    --------------
     
    --------------
    select * from `tabone`
    --------------
     
    +----+-------+
    | id | lib   |
    +----+-------+
    |  1 | un    |
    |  2 | zwei  |
    |  3 | trois |
    +----+-------+
    --------------
    DROP TABLE IF EXISTS `tabtwo`
    --------------
     
    --------------
    CREATE TABLE `tabtwo`
    ( `id`      INTEGER UNSIGNED NOT NULL auto_increment PRIMARY KEY,
      `mess`    CHAR(255)        NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `tabtwo` (`id`,`mess`) values  (2, 'due')
    --------------
     
    --------------
    select * from `tabtwo`
    --------------
     
    +----+------+
    | id | mess |
    +----+------+
    |  2 | due  |
    +----+------+
    --------------
    DROP TRIGGER IF EXISTS `maj`
    --------------
     
    --------------
    CREATE TRIGGER `maj`
    AFTER update ON `tabtwo`
    FOR EACH ROW
    BEGIN
      update `tabone`
         set lib = new.mess
       where id  = new.id;
    END
    --------------
     
    --------------
    update `tabtwo` set mess = 'deux' where id = 2
    --------------
     
    --------------
    select * from `tabone`
    --------------
     
    +----+-------+
    | id | lib   |
    +----+-------+
    |  1 | un    |
    |  2 | deux  |
    |  3 | trois |
    +----+-------+
    --------------
    select * from `tabtwo`
    --------------
     
    +----+------+
    | id | mess |
    +----+------+
    |  2 | deux |
    +----+------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @+

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 934
    Points : 348
    Points
    348
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    De mémoire, avec UPDATE, la jointure s'exprime plutôt de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE table2 t2
    INNER JOIN table1 t1 ON t1.identifiant = t2.sujet_identifiant
    SET t2.objet = t1.value
    WHERE t1.objet_id = 4;
    Pas de FROM puisque la première table est déjà citée dans la partie UPDATE.
    merci pour ton retour, ça marché

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2013
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 934
    Points : 348
    Points
    348
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut à tous.

    @ android59 : ce que vous nous donnez n'est pas un déclencheur.
    Il y a une syntaxe à respecter, ce que vous ne faites pas !

    Voici un exemple d'utilisation d'un déclencheur avec mise à jour d'une autre table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    --------------
    SET AUTOCOMMIT = 0
    --------------
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Merci pour ton retour

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

Discussions similaires

  1. Probleme trigger mysql 5
    Par DarkMax dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/03/2006, 22h50
  2. TRIGGER MySQL 5.0 Yes or No
    Par popol666 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2005, 13h51
  3. probleme trigger
    Par samourai_alex dans le forum Oracle
    Réponses: 10
    Dernier message: 05/01/2005, 11h37
  4. Probleme api mysql
    Par ThomasC dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 06/09/2004, 16h00
  5. Probleme avec Mysql
    Par kevinss dans le forum Administration
    Réponses: 5
    Dernier message: 31/10/2003, 10h43

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