Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2008, 09h49   #1
Membre chevronné
 
Avatar de muad'dib
 
Inscription : janvier 2003
Messages : 881
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : janvier 2003
Messages : 881
Points : 780
Points : 780
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.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans l'éditeur de message.
Pensez à la balise
Mon site dédié au jeu d'échecs - Logiciel de suivi d'entrainement de musculation gratuit
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h15   #2
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Bonjour,

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

Bonne journée
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h20   #3
Membre chevronné
 
Avatar de muad'dib
 
Inscription : janvier 2003
Messages : 881
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : janvier 2003
Messages : 881
Points : 780
Points : 780
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 ?
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans l'éditeur de message.
Pensez à la balise
Mon site dédié au jeu d'échecs - Logiciel de suivi d'entrainement de musculation gratuit
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h52   #4
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Bonjour,
On doit pouvoir s'en sortir sans trigger.
En déclarant id comme float
Code :
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
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 13h47   #5
Membre chevronné
 
Avatar de muad'dib
 
Inscription : janvier 2003
Messages : 881
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : janvier 2003
Messages : 881
Points : 780
Points : 780
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)
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans l'éditeur de message.
Pensez à la balise
Mon site dédié au jeu d'échecs - Logiciel de suivi d'entrainement de musculation gratuit
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 13h49   #6
Membre régulier
 
Inscription : octobre 2006
Messages : 121
Détails du profil
Informations personnelles :
Âge : 61

Informations forums :
Inscription : octobre 2006
Messages : 121
Points : 90
Points : 90
Bonjour,

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

Bonne A.M.
MS
MarcS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 13h53   #7
Membre chevronné
 
Avatar de muad'dib
 
Inscription : janvier 2003
Messages : 881
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : janvier 2003
Messages : 881
Points : 780
Points : 780
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.
__________________
Pour une bien meilleur lisibilité, utilisez la balise [code], c'est le [#] dans l'éditeur de message.
Pensez à la balise
Mon site dédié au jeu d'échecs - Logiciel de suivi d'entrainement de musculation gratuit
muad'dib est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h12.


 
 
 
 
Partenaires

Hébergement Web