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 :

Demande d'aide pour un Trigger


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Par défaut Demande d'aide pour un Trigger
    Bonjour à tous, et meilleurs voeux pour 2014 !

    Etudiant en BTS, j'ai un projet à présenter à la fin de l'année concernant une application pour une société fictive. Pour améliorer la base de donnée de mon application, j'ai décidé d'insérer un nouvel attribut dans ma table et de le modifier avec un TRIGGER.

    Concrètement, j'ai une liste de techniciens, qui effectuent des interventions, pour des entreprises. Dans ma table TECHNICIEN, j'aimerai ajouter un attribut qui stocke le nombre d'intervention effectuée pour chaque technicien.
    C'est pourquoi, j'ai voulu créer un TRIGGER.
    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
    DELIMITER //
     
     
    CREATE TRIGGER nbIntervention
    AFTER Insert
    ON INTERVENTION
     
    FOR EACH ROW
    BEGIN
     
    	UPDATE TECHNICIEN
    	SET nbIntervention = nbIntervention + 1
    	WHERE num_port = NEW.num_port
    END //
     
     
    DELIMITER ;
    Or en mettant une restriction, mon TRIGGER ne peut s'insérer dans la Base de données, et si je laisse le code de mon TRIGGER tel quel, à chaque intervention ajoutée, c'est tout les techniciens qui seront incrémenté.


    Voici les contenus de mes deux tables :

    TECHNICIEN

    num_port PK
    code_util
    nom
    num_agence
    nb_Intervention

    INTERVENTION

    num_intervention PK
    num_port FK En REF à TECHNICIEN.num_port
    ...

    J'aimerai donc un petit coup de main s'il vous plait, car je sèche un peu sur ce coup là

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Par défaut
    Bonjour,

    Pourquoi vouloir ajouter une colonne dans la table technicien alors que le nombre d'intervention peut être calculé par une simple requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*) nbIntervention
    FROM INTERVENTION
    WHERE num_port = 1 -- Pour le technicien portant l'id 1
    De plus la colonne nbIntervention que vous souhaitez ajouter ne respecte pas une des règles de conception qui est de ne pas stocker de valeur calculer dans une BDD.

    La requête dans votre trigger est correct et ne mettra à jour que le technicien à laquelle la nouvelle intervention à été affectée vue que le filtre de la requête est appliqué sur la clé primaire de la table techicien.

Discussions similaires

  1. Demande d'aide pour un exercice
    Par IDE dans le forum C
    Réponses: 3
    Dernier message: 29/10/2005, 15h09
  2. [xsl][xalan]Demande d'aide pour un comptage
    Par HomoErectus dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 19/09/2005, 09h22
  3. Demande d'aide pour query difficile
    Par ericjean514 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/02/2005, 18h52
  4. Demande d'aide pour une requête
    Par arkzor dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/12/2004, 02h40
  5. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

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