Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MYSQL : CRÉATION D'UN GUID


Information sur la source



Description

Ceux qui fonctionnent avec des technologies Microsoft savent ce qu'est un Guid. C'est un code unique (hexadécimal, sur 32 caractères) qui peut servir d'identifiant dans une table (comme un champ auto_increment).

Voici un exemple de fonction pour créer un Guid.
 

Source

  • DROP FUNCTION IF EXISTS `CreateGUID`;
  • DELIMITER ;;
  • CREATE FUNCTION `CreateGUID`() RETURNS VARCHAR(32)
  • NOT DETERMINISTIC READS SQL DATA
  • BEGIN
  • DECLARE i TINYINT(1) DEFAULT 1;
  • DECLARE strValid VARCHAR(16) DEFAULT '0123456789ABCDEF';
  • DECLARE guid VARCHAR(32) DEFAULT '';
  • DECLARE pos TINYINT(2);
  • REPEAT
  • SELECT FLOOR(1 + RAND() * (LENGTH(strValid) - 1)) INTO pos;
  • SELECT CONCAT(guid, SUBSTR(strValid, pos, 1)) INTO guid;
  • SELECT i + 1 INTO i;
  • UNTIL i > 32 END REPEAT;
  • RETURN guid;
  • END;;
  • DELIMITER ;
DROP FUNCTION IF EXISTS `CreateGUID`;
DELIMITER ;;
CREATE FUNCTION `CreateGUID`() RETURNS VARCHAR(32)
NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE i TINYINT(1) DEFAULT 1;
DECLARE strValid VARCHAR(16) DEFAULT '0123456789ABCDEF';
DECLARE guid VARCHAR(32) DEFAULT '';
DECLARE pos TINYINT(2);
REPEAT
SELECT FLOOR(1 + RAND() * (LENGTH(strValid) - 1)) INTO pos;
SELECT CONCAT(guid, SUBSTR(strValid, pos, 1)) INTO guid;
SELECT i + 1 INTO i;
UNTIL i > 32 END REPEAT;
RETURN guid;
END;;
DELIMITER ;

Conclusion

Peut être utile pour les projets fonctionnant en .NET/MySql.
 

Commentaires et avis

signaler à un administrateur
Commentaire de FENETRES le 07/01/2008 12:27:42

Afin d'assurer une forte probabilité d'unicité, il me semble qu'un GUID est calculé d'après l'adresse MAC. Ce qui n'est visiblement pas le cas avec cette source !

signaler à un administrateur
Commentaire de maitredede le 08/01/2008 11:19:37

Il y a effectivement plusieurs algo de calcul de Guid. Certains sont fait à partir d'une adresse MAC, d'autres à partir de la date/heure...
La probabilité de conflits sur une génération aléatoire reste faible.
D'autant plus que, sans modules complémentaires, il n'est pas possible de récupérer une adresse MAC depuis mysql...

Après, tu peux coder un module qui fait appel à l'OS pour générer des Guid...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Mysql - Unicité de plusieurs champs [ par fone ] Bonjour, Je dispose d'une table qui utilise innoDB, elle à une structure similaire à celle-ci : int id <- auto incremental, unique varchar(255) a, v Foreign Key sous MySql [ par MadM@tt ] Bonjour à tous,Je travaille avec DBDesigner (mais c'est peu important pour la suite). Je viens de réaliser que les clés étrangères n'était pas possibl erreur de syntaxe mysql [ par pimpa4real ] Bonjour à tous,Voila je suis en train de créer une nouvelle base de données sous MySQL 5 et j'ai sans doute un problême de syntaxe....Si quelqu'un pou concatenation dans requette mysql [ par glipper ] Bonjour,je ne connais vraiment rien sur le language SQL, et bien que d'habitude je m'en sors en cherchant les requetes sur google, cette fois-ci je ne calcul de somme d'heure et de minute avec des datetime se trouvant dans des tables sous sql server en php [ par DericTP7 ] Bonjour,je me permet de faire appel à vos lumières, car avec mysql je m'en sors pas trop mal (façon de parler). Par contre, sous sql server ce n'est p Update Mysql Table from csharp datagridview [ par olibara ] BonjourSoit ma question erst tellement idiorte que personne ne veut y repondre soit personne ne connait la reponseJe cherche un petit tutorial  simple Requete INSERT [ par Frenzey ] Bonjour j'ai réalisé un script qui permet de parse un fichier xml et de transferer le contenu sur une Base de donnée grace à une requete INSERT. le pr connexion base mysql [ par freeradius ] slt mon pfe consiste a interroger une base de donne mysql sur un serveur unix il faut faire alors une application (avec windev) sur un system d'exploi Acces a MySql [ par olibara ] BonjourJusqu'aujourd'hui j'ai toujours travaillé avec MySql installé en localhost sur ma machine de travailJ'ai deux machines avec deux installation M Somme de champs MySQL [ par dthuler ] Bonjour à tous,Voilà une question de débutant:Je cherche le moyen (fonction?) d'additionner les valeurs d'un champ d'une sélection SQL (voir exemple c


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Appels d'offres



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.