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 Mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Par défaut Trigger Mysql
    Bonjour,

    Voila, j'ai un souci de trigger sur Mysql et je n'arrive à rien étant débutant sur Mysql, j'aurais besoin de votre aide pour faire ce maudit trigger, s'il vous plait.

    J'aurais besoin de faire ceci avec le trigger :
    Lors de l'insertion d'un enreg dans une table, je voudrais que certaine information soit insérer dans une autre table.

    J'ai une table employée et une table ressource dans une base.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    delimiter //
    Create trigger trig_ins_ressource
    BEFORE Insert ON employee for each ROW
     
      Begin
        SET New.emp_number = (select max(emp_number) from employee) + 1;
        SET New.emp_firstname = (select emp_firstname from employee where emp_number = New.emp_number);
     
        Insert into ressource (emp_number, libelle_ressource) Values (New.emp_number,New.emp_firstname);
      END;
    //
    En sachant que ces deux tables ont un champs en commun qui est emp_number.

    Malheureusement, j'ai toujours un message d'erreur :
    This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table

    Les champs sont de types :
    emp_number int (auto-incrément dans la table hs_hr_employee)
    emp_firstname varchar(50)
    libelle_ressource varchar(50)

    Mysql Version 5.1.22 et Mysql client Version 5.1.11

    Pourriez vous m'aider s'il vous plait.

    Merci d'avance

  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
    Oulà....

    Quand il y a un champs auto-incrément, tu n'as pas besoin de l'affecter. Je dirais même que tu ne dois pas: c'est le SGBD qui gère.
    En plus, quand on supprime 1 ligne, le n° n'est pas réutilisé.
    Donc, outre le fait que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (SELECT max(emp_number) FROM employee) + 1
    est de + en + coûteux, ce genre de pratique doit être bannie sous peine d'obtenir des aberrations de référence.

    http://dev.mysql.com/doc/refman/5.0/...-triggers.html
    Le déclencheur ne peut pas faire référence directe aux tables par leur nom, y copmris la table à laquelle il est associé.
    Enfin, pour gérer la référence à emp_number dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ressource (emp_number...
    je crois préférable d'utiliser Last_insert_id : http://dev.mysql.com/doc/refman/5.0/...functions.html

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Par défaut
    Je me suis surement mal exprimé dans la table ressource le champs emp_number n'est pas de type auto-incrément.

    C'est pour cela que je récupére la valeur de celui-ci de la table employee (auto-increment) et je la transfert dans la table ressource (non increment champ de reference lien entre les deux tables).

    je ne connaissais pas last_insert_id.

    En tous cas merci pour ce début de réponse.

Discussions similaires

  1. Trigger MySQL on insert
    Par popovitch130 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 18/05/2008, 19h15
  2. Syntaxe Trigger Mysql / Transact SQL de SQL Server
    Par Flashball dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 13/03/2008, 15h23
  3. Sommer des colonnes avec un trigger MySQL
    Par Benoit7114 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 17/01/2008, 12h08
  4. Probleme trigger mysql 5
    Par DarkMax dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 18/03/2006, 22h50
  5. TRIGGER MySQL 5.0 Yes or No
    Par popol666 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2005, 13h51

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