131 votes

Générer un GUID dans MySQL pour des données existantes ?

Je viens d'importer un tas de données dans une table MySQL et j'ai une colonne "GUID" que je veux essentiellement remplir toutes les lignes existantes avec de nouveaux GUID uniques et aléatoires.

Comment puis-je faire cela dans MySQL ?

J'ai essayé

UPDATE db.tablename
  SET columnID = UUID()
  where columnID is not null

Et faire en sorte que chaque champ soit le même

2 votes

Vous êtes vraiment sûr qu'ils sont identiques ? J'ai essayé, la plupart des caractères sont identiques, mais il y a quelques différences dans l'uuid généré.

0 votes

Oui, je confirme, c'est la même chose !

2 votes

Cela fonctionne pour moi - les différences sont mineures, mais elles sont là. Le moyen le plus rapide de vérifier est d'ajouter une contrainte UNIQUE à la colonne.

4voto

evan.leonard Points 466

On dirait une simple erreur de frappe. Vous ne vouliez pas dire "...where columnId est null" ?

UPDATE db.tablename
  SET columnID = UUID()
  where columnID is null

4voto

J'ai rencontré le même problème. Dans mon cas, l'uuid est stocké en tant que BINARY(16) et a des contraintes UNIQUE NOT NULL. Et j'ai été confronté à un problème lorsque le même UUID a été généré pour chaque ligne, et la contrainte UNIQUE ne le permet pas. Cette requête ne fonctionne donc pas :

UNHEX(REPLACE(uuid(), '-', ''))

Mais pour moi, cela a fonctionné, lorsque j'ai utilisé une telle requête avec une sélection interne imbriquée :

UNHEX(REPLACE((SELECT uuid()), '-', ''))

On obtient alors un résultat unique pour chaque entrée.

3voto

Hugo R Points 1445

MYsql

UPDATE tablename   SET columnName = UUID()

oracle

UPDATE tablename   SET columnName = SYS_GUID();

SQLSERVER

UPDATE tablename   SET columnName = NEWID();;

2voto

UPDATE db.tablename SET columnID = (SELECT UUID()) where columnID is not null

1voto

Leonardo Filipe Points 143
// UID Format: 30B9BE365FF011EA8F4C125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(REPLACE(@i:=UUID(),'-','')));

// UID Format: c915ec5a-5ff0-11ea-8f4c-125fc56f0f50
UPDATE `events` SET `evt_uid` = (SELECT UUID());

// UID Format: C915EC5a-5FF0-11EA-8F4C-125FC56F0F50
UPDATE `events` SET `evt_uid` = (SELECT UPPER(@i:=UUID()));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X