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 :

Question trigger pour tester une ancienne valeur


Sujet :

MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2014
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2014
    Messages : 85
    Points : 147
    Points
    147
    Par défaut Question trigger pour tester une ancienne valeur
    Bonjour,

    je cherche un moyen de faire un trigger qui va vérifier une valeur contenue dans une table avant de valider un INSERT.

    Dans mon exercice j'ai une colonne contenant ID_Fonction dans ma table Employe.

    Un employé ne peut occuper qu'une fonction donc le but du trigger est de valider l'opération ou la refuser si on veut faire un INSERT dans la colonne ID_Fonction.
    Bien que ma colonne ne puisse contenir qu'une valeur, je voudrais quand même résoudre ce problème par un trigger.

    Donc pour le moment j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    DROP TRIGGER IF EXISTS t_before_insert;
    DELIMITER |
    CREATE TRIGGER t_before_insert
    BEFORE INSERT
    ON Employe
    FOR EACH ROW
    BEGIN
      IF NEW.ID_Fonction IS NOT NULL
      THEN INSERT INTO Erreur VALUES ('Occupe déjà une fonction'); -- L'erreur est dans une table erreur avec un champ unique
      END IF;
    END|
    DELIMITER ;
    Avec ce trigger lors d'un INSERT d'une valeur, si la valeur est NULL je reçois ce msg: Error Code: 1136. Column count doesn't match value count at row 1

    En fait, lorsque je regarde le trigger, la valeur NEW.ID_Foncion n'est pas NULL ce qui est logique mais comment tester si l'ancienne valeur était différence de NULL?

    Merci pour votre aide

    Ersch

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    quand on insert une ligne il n'existe pas de notion d'ancienne valeur.


    la notion d'ancienne valeur n'est disponible que lors d'un statement update ou delete.

    Lisez un peu la doc pour vous éclaircir les idées : http://dev.mysql.com/doc/refman/5.6/...er-syntax.html

Discussions similaires

  1. Question trigger pour tester une ancienne valeur
    Par Ersch dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/04/2015, 13h51
  2. [XL-2000] Formule à utiliser pour tester une fourchette de valeur
    Par rene2 dans le forum Excel
    Réponses: 12
    Dernier message: 26/04/2011, 03h24
  3. trigger pour modifier une valeur après création du record
    Par awalter1 dans le forum Administration
    Réponses: 5
    Dernier message: 07/03/2011, 18h41
  4. Réponses: 1
    Dernier message: 08/06/2007, 09h12
  5. trigger pour tester une clé primaire
    Par keumlebarbare dans le forum PL/SQL
    Réponses: 3
    Dernier message: 15/04/2007, 10h29

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