Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 374 fois - Téléchargée 23 fois
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 ;
23 juin 2009 à 02:59
Copier collé dans l'exécution SQL de phpmyadmin et erreur sur la 2eme ligne, et c'est pas la seul.
30 nov. 2008 à 08:51
L'ambiguïté potentielle (pour quelqu'un qui lirait un peu vite sans chercher à comprendre, ce qui n'est pas une bonne chose) de la phrase "un GUID est un code unique, qui peut servir d'identifiant dans une table (comme un champ auto_increment)." : cela ne veut pas dire que l'on peut stocker un GUID dans un champ auto_increment. Soit on utilise un champ INT auto_increment, soit un "bête" champ VARCHAR(32) dans lequel on va stocker explicitement les GUID que l'on génère.
Sur le plan théorique, j'ai une réserve à l'encontre de cette source : il me semble plus judicieux de faire générer le GUID par l'applicatif que par la base de données. D'une part parce que les routines existent déjà, censées fournir un meilleur GUID qu'un simple random; d'autre part parce que c'est l'applicatif qui "sait" ce qu'est un GUID. Et il est toujours mieux, si vous voulez construire une application robuste et lisible, de concentrer la gestion d'un objet dans la partie du système qui "sait" ce qu'est l'objet.
Il ne s'agit bien sûr que d'une réserve théorique, et il se peut que cette source trouve son utilisation justifiée dans un contexte donné. Mais un avertissement me semblait nécessaire pour éviter qu'un débutant en .NET/Mysql ne tombe sur cette source et utilise cette solution pour générer un GUID là où un appel .NET aurait suffi et aurait été préférable (appel qu'il serait intéressant d'expliciter ici, si quelqu'un connaît la fonction à appeler).
8 janv. 2008 à 11:19
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...
7 janv. 2008 à 12:27
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.