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

 MySQL Discussion :

Trigger sur une même table


Sujet :

MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Trigger sur une même table
    Bonjour.
    Je suis débutant dans le SQL et le développement web en général.
    Je souhaite quitter Filemaker pour commencer à apprendre tout ça.

    J'ai une question concernant les trigger.
    J'ai une table eleve :
    3 rubriques : nom, prenom, et prenom_nom.

    Je souhaite que la rubrique prenom_nom se complète toute seule, lorsque je crée ou je modifie une fiche.

    Est-ce que cela est possible ? SQL me renvoi un message d'erreur disant que je ne peux pas écrire sur la table concernée.

    Voici le code de mon trigger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DROP TRIGGER IF EXISTS `eleve_PRENOM_NOM_UPDATE`;
    CREATE DEFINER=`root`@`localhost` 
    TRIGGER `eleve_PRENOM_NOM_UPDATE` 
    AFTER UPDATE ON `eleve` 
    FOR EACH ROW INSERT INTO eleve SET prenom_nom=CONCAT(prenom,' ',nom)
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Je ne perds pas de temps à lire le code de ton trigger... parce que c'est une très mauvaise idée de stocker deux fois la même information dans ta table alors qu'il suffirait de créer une vue sur cette table qui te retournerait en temps réel cette colonne calculée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE VIEW vueEleve
    AS  SELECT  nom
            ,   prenom
            ,   CONCAT(prenom,' ',nom)  AS  prenom_nom
        FROM    eleve
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse rapide.
    Comme je l'ai dit, je suis débutant, ma question était un exemple.
    Je ne connais pas les vues. Je vais étudier ces fonctions.

    Cependant, ma question est toujours sans réponse : est-ce possible de modifier la même table sur un trigger ?

    Merci.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Oui il est bien sur possible de modifier la même table sur un trigger.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    A titre purement informatif sur la création des triggers, la vue étant effectivement préférable dans ce cas, il faut utiliser les mots clés OLD et NEW pour manipuler les valeurs des colonnes de la ligne en cours de création ou de modification.
    Par exemple, quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TRIGGER eleve_PRENOM_NOM_UPDATE BEFORE INSERT ON eleve
    FOR EACH ROW 
    BEGIN
      set NEW.prenom_nom = CONCAT(new.prenom,' ',new.nom);
    end;

Discussions similaires

  1. [9.2] Trigger sur une même table
    Par Leehan dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/03/2015, 08h57
  2. Plusieurs trigger sur une même table / Performances
    Par tchoimars dans le forum PL/SQL
    Réponses: 2
    Dernier message: 27/01/2010, 15h58
  3. Trigger Insert after sur une même table
    Par soumimasen dans le forum PL/SQL
    Réponses: 3
    Dernier message: 29/05/2008, 18h49
  4. Trigger sur une même table
    Par lamanoo dans le forum DB2
    Réponses: 6
    Dernier message: 29/08/2007, 17h01
  5. Réponses: 2
    Dernier message: 29/09/2004, 09h07

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