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 :

trigger, Champ3 = Champ1 + Champ2


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut trigger, Champ3 = Champ1 + Champ2
    Bonjour

    j'aimerai connaitre comment utilisé les triggers pour réaliser des opérations automatiquement sur mes tables.

    Exemple j'ai une table "table_somme" avec 4champs : 'id', 'champs1', 'champs2' et 'champs3'

    je veux qu'à chaque fois que je donne des valeurs numériques à 'champs1' et 'Champs2' la valeur somme se généré automatiquement dans le 'champs3'

    j'ai lu quelques tuto sur les triggers et j'ai essayé ça mai en vin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TRIGGER calcul;
    AFTER INSERT ON table_somme;
    BEGIN
    SELECT  champs1,Champs2, (Champs1+Champs2) AS champs3 FROM table_somme;
    END//


    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    C'est même étonnant que ce trigger soit accepté par MySQL

    Commence par vérifier la syntaxe par rapport à cet exemple http://dev.mysql.com/doc/refman/5.0/...-triggers.html

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    Bonsoir

    j'avais déjà lu l'exemple que tu m'a donné, il permet de mettre la somme de deux champs dans une variable, j'ai essayé de l'adapter à mon problème c'est pour ça que tu as trouvé la syntaxe un peu bizarre

    c'est juste pour bien expliquer ce que je veux faire

    j'attends vos réponses ^^ (help plz)

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par escafleak Voir le message
    je veux qu'à chaque fois que je donne des valeurs numériques à 'champs1' et 'Champs2' la valeur somme se généré automatiquement dans le 'champs3'
    D'abord, les champs sont à la campagne ou dans les formulaires ! Les tables SQL ne sont composées que de clignes et de colonnes !

    Ensuite, on ne stocke pas en base de données une valeur aussi facilement calculable. Ta colonne 3 est inutile et contre-performante.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    salut

    D'abord, les champs sont à la campagne ou dans les formulaires ! Les tables SQL ne sont composées que de clignes et de colonnes !
    désolé si je te contredis mais on les appelle aussi (champs et entrées ) les lignes et les colonnes c'est à l'origine pour les tableaux et les matrices

    on ne stocke pas en base de données une valeur aussi facilement calculable. Ta colonne 3 est inutile et contre-performante
    je sais, mais pour faire un truc compliqué faut commencer par un truc simple
    en fait je vien de réussir à réaliser ce que je voulais et voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE table_somme (id int,Champs1 int, Champs2 int, Champs3 int);
    CREATE TRIGGER somme BEFORE INSERT ON table_somme
    FOR EACH ROW SET new.Champs3= new.Champs1 + new.Champs2;
    maintenant j'aimerai faire la même chose sauf que le champs3 appartient à une autre table dans la même base de données.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par escafleak Voir le message
    désolé si je te contredis mais on les appelle aussi (champs et entrées ) les lignes et les colonnes c'est à l'origine pour les tableaux et les matrices
    Comment ajoutes-tu "un champ" à une table SQL ?
    CQFD !


    je sais, mais pour faire un truc compliqué faut commencer par un truc simple
    en fait je vien de réussir à réaliser ce que je voulais et voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CREATE TABLE table_somme (id int,Champs1 int, Champs2 int, Champs3 int);
    CREATE TRIGGER somme BEFORE INSERT ON table_somme
    FOR EACH ROW SET new.Champs3= new.Champs1 + new.Champs2;
    maintenant j'aimerai faire la même chose sauf que le champs3 appartient à une autre table dans la même base de données.
    Ben tu ajoutes une requête INSERT ou UPDATE dans ton trigger. Mais une fois de plus c'est une colonne calculée qui n'a pas à être stockée en BDD !

    Bon courage
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  7. #7
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Comment ajoutes-tu "un champ" à une table SQL ?
    CQFD !
    Bon courage
    Juste pour le fun,
    Comment mettriez vous a jour un "champ" en SQL ?

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    Juste pour le fun,
    Comment mettriez vous a jour un "champ" en SQL ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE une_table
    SET une_colonne = valeur
    WHERE condition_de_restriction_sur_la_ou_les_lignes_à_modifier
    Pas de champ là dedans !

    Ou si on veut modifier la structure de la colonne, et puisqu'on est chez MySQL, la doc dit ceci :
    MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Membre averti
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 15
    Par défaut
    salut

    bon laissons l’histoire de colonne ou champ a coté et concentrant nous sur le problème et à partir d'aujourd'hui je ne dirais plus "champ"

    Mais une fois de plus c'est une colonne calculée qui n'a pas à être stockée en BDD !
    je ne comprends pas pourquoi tu dis ça !!!!

    je veux effectuer des opérations sur les valeurs des 'colonnes' d'une table et stoker les résultats automatiquement dans une autre table .
    je veux éviter de faire à chaque fois des calculs avant d'afficher ma table ou il y a les résultats tu vois ?!!

    Ben tu ajoutes une requête INSERT ou UPDATE dans ton trigger.
    ok je vais essayer Merci beacoup

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

Discussions similaires

  1. [MySQL] select where champ1+champ2 ?
    Par maxence64 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 14/05/2012, 21h03
  2. requête sur champ particuler = champ1.-.champ2
    Par gotcha5832 dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/12/2009, 19h00
  3. "select *" ou "select champ1, champ2, etc." ?
    Par Papy214 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 22/01/2009, 10h45
  4. Réponses: 3
    Dernier message: 02/06/2008, 14h06
  5. Liste et croisement de tables (RR.champ1 RVR.champ2)
    Par yazerty dans le forum Requêtes
    Réponses: 5
    Dernier message: 17/01/2006, 21h29

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