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 :

Un champs de nombres aléatoires uniques qui ne se suivent pas ?


Sujet :

SQL Procédural MySQL

  1. #1
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut Un champs de nombres aléatoires uniques qui ne se suivent pas ?
    Bonjour à tous,

    Existe-t-il une méthode pour avoir un genre de champs unique autoincrement mais avec des numeros qui ne se suivent pas? Je sais qu'on peut donner une valeur à l'incrément mais ce n'est pas ce que je recherche.

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    En utilisant la fonction rand() et un trigger cela devrait faire

    Bonne journée
    MS

  3. #3
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Merci pour la réponse Marcs. Mais pourrais tu être plus précis ? Comment puis-je par le biais du trigger m'assurer que l'identifiant sera unique ?

  4. #4
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    On doit pouvoir s'en sortir sans trigger.
    En déclarant id comme float
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select max(id) from matable into @x;
    Set @y=@x+rand();
    insert into matable (id) values(@x);
    La même chose doit permettre de le faire dans un trigger before update.

    Juste une question, quel est l'utilité de la chose ?

    Bonne journée

    MS

  5. #5
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Merci je vais essayer ça. En fait, le but est de générer un code client à 5 chiffres, mais je voudrais éviter les codes du genre 00001, 00002 ... pour ne pas donner l'impression au client qu'il est le premier ou 3eme de la liste.

    Edit: après relecture du code, celui-ci ne permet pas d'exploiter au maximum le nombre de clients possibles d'enregistrer. sur 5 chiffres, je pourrai avoir 99999 clients, mais si je saute les valeurs intermediaires par l'utilisation de id + rand(), je peux me retrouver avec une possibilité réduite de moitié, par exemple 50000 utilisateurs (je ne sais pas si je m'explique)

  6. #6
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 73

    Informations forums :
    Inscription : Octobre 2006
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    Dans ce cas pourquoi ne pas utiliser un autoincrement qui commence à un numéro prédéfini ?

    Bonne A.M.
    MS

  7. #7
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 013
    Points : 1 381
    Points
    1 381
    Par défaut
    Citation Envoyé par MarcS Voir le message
    Dans ce cas pourquoi ne pas utiliser un autoincrement qui commende à un numéro prédéfini ?
    Oui c'est encore le plus simple à faire finalement. Mais j'aurais cru qu'une solution plus subtile existait. Merci quand même.

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

Discussions similaires

  1. Génération d'une nombre aléatoire unique
    Par jopont dans le forum BIRT
    Réponses: 18
    Dernier message: 30/06/2013, 08h49
  2. Nombre aléatoire unique
    Par poussinvert dans le forum C#
    Réponses: 8
    Dernier message: 24/02/2013, 22h18
  3. [Tableaux] 5 nombres aléatoires uniques
    Par jiojio dans le forum Langage
    Réponses: 8
    Dernier message: 06/03/2009, 13h45
  4. nombre aléatoire unique
    Par Alex35 dans le forum VB.NET
    Réponses: 20
    Dernier message: 08/01/2008, 17h22

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