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 :

Créer un trigger pour faire un auto incrément avec clé primaire relative


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut Créer un trigger pour faire un auto incrément avec clé primaire relative
    Bonjour, je souhaiterai créer un trigger afin de calculer l'identifiant à la façon d'un auto increment.

    POur etre plus clair voici la structure de ma table :

    client(id, #idSociete, nom, ....)

    Et ce que je voudrai faire c'est par exemple :
    - Que la société (idSociete) 1 ait les clients qui se numérotent à partir de 1.
    - Mais aussi que la société 2 ait ses client qui se numérotent à partir de 1 aussi.

    En tableau cela donnerai :

    | IdSociete | Id |
    | 1 | 1 |
    | 1 | 2 |
    | 1 | 3 |
    | 1 | 4 |
    | 2 | 1 |
    | 2 | 2 |
    | 2 | 3 |
    | 2 | 4 |

    J'ai commencer à écrire un trigger pour calculer "Id" mais il ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DELIMITER $$
    CREATE TRIGGER TRG_BI_CLIENT BEFORE INSERT
     ON client 
     FOR EACH ROW
     BEGIN
    	DECLARE IdIncremente int;
    	IF (NEW.id = "") THEN
    		IdIncremente = SELECT MAX(id)+1 FROM client WHERE idSociete = NEW.idSociete;
    		SET NEW.id = IdIncremente ;
    	END IF;
     END $$
    Si quelqu'un a la solution je suis preneur...

    Merci d'avance

  2. #2
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut
    Mal expliquer ? Personne n'a d'idées ?

  3. #3
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Citation Envoyé par zolectronic Voir le message
    Mal expliquer ? Personne n'a d'idées ?
    non, ce n'est simplement pas une bonne idée de faire ça...

  4. #4
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut
    Alors comment dois-je faire ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    A quoi te servirait ce numéro ? et que se passe-t-il quand un client n'est plus client dans une société ? ou qu'un autre est ajouté de manière rétroactive ?

  6. #6
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut
    Ce numéro me sers pour l'affichage.
    Je voudrai juste savoir ou est mon erreur.

  7. #7
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Il manque un SET :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DELIMITER $$
    CREATE TRIGGER TRG_BI_CLIENT BEFORE INSERT
     ON client 
     FOR EACH ROW
     BEGIN
    	DECLARE IdIncremente int;
    	IF (NEW.id IS NULL) THEN
    		SET IdIncremente = (SELECT MAX(id)+1 FROM client WHERE idSociete = NEW.idSociete) ;
    		SET NEW.id = IdIncremente ;
    	END IF;
     END $$

  8. #8
    Membre expérimenté

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 136
    Par défaut
    Parfait, faudrait que j'ouvre un peu les yeux parfois...

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/04/2011, 17h44
  2. [SQL SERVER 2005]créer un trigger pour chaque table de chaque DB
    Par Kropernic dans le forum Développement
    Réponses: 14
    Dernier message: 23/02/2010, 12h56
  3. Créer une entreprise pour faire des formations
    Par Jeff_p dans le forum Structure
    Réponses: 16
    Dernier message: 23/05/2008, 12h48
  4. Réponses: 8
    Dernier message: 06/12/2005, 11h33
  5. Trigger pour faire une table "mirroir"
    Par lgomez dans le forum Oracle
    Réponses: 8
    Dernier message: 26/10/2005, 13h12

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