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 :

Récupération de résultats dans plusieurs variables avec une seule requête dans un TRIGGER


Sujet :

SQL Procédural MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Récupération de résultats dans plusieurs variables avec une seule requête dans un TRIGGER
    Bonjour,

    J'ai le trigger suivant :
    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
    DELIMITER |
    CREATE TRIGGER `mon_trigger` AFTER INSERT ON `ma_table` FOR EACH ROW
    BEGIN
    	DECLARE var1 varchar(50);
    	DECLARE var2 varchar(50);
    	DECLARE var3 varchar(50);
    	DECLARE var4 varchar(50);
     
    	SET var1 = (SELECT t.lib1 FROM une_table t WHERE t.id=NEW.ma_fk);
    	SET var2 = (SELECT t.lib2 FROM une_table t WHERE t.id=NEW.ma_fk);
    	SET var3 = (SELECT t.lib3 FROM une_table t WHERE t.id=NEW.ma_fk);
    	SET var4 = (SELECT t.lib4 FROM une_table t WHERE t.id=NEW.ma_fk);
     
    	/* puis utilisation des variables var1, var2, var3 var4...*/
    END |
    DELIMITER ;
    J'aimerais savoir si je peux n’exécuter qu'une seule fois la requête avec une instruction de ce genre-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	SET var1, var2, var3, var4 = (SELECT t.lib1, t.lib2, t.lib3, t.lib4 FROM une_table t WHERE t.id=46);
    Ce trigger est appelé extrêmement souvent, donc j'aimerais l'optimiser même si la première solution fonctionne.

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Parfait, ça marche. Merci beaucoup !

    Du coup ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DECLARE var1, var2, var3, var4 varchar(50);
    SELECT t.lib1, t.lib2, t.lib3, t.lib4 INTO var1, var2, var3, var4 FROM une_table t WHERE t.id=NEW.ma_fk;

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

Discussions similaires

  1. Résultat de plusieurs semaines sur une seule requête
    Par chart dans le forum Requêtes
    Réponses: 9
    Dernier message: 29/07/2014, 17h35
  2. Insérer plusieurs lignes avec une seule requête
    Par kyuuse1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/06/2013, 09h06
  3. count dans table externe avec une seule requête
    Par gtraxx dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/04/2011, 10h39
  4. Réponses: 3
    Dernier message: 20/11/2009, 19h51
  5. Réponses: 5
    Dernier message: 09/07/2008, 17h04

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