Saltar al contenido

¿Generar GUID en MySQL para datos existentes?

Pudiera darse el caso de que halles alguna incompatibilidad con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al trabajo final.

Solución:

Tuve la necesidad de agregar un guid primario key columna en una tabla existente y rellénela con GUID únicos y esta consulta de actualización con selección interna funcionó para mí:

UPDATE sri_issued_quiz SET quiz_id=(SELECT uuid());

Tan sencillo 🙂

No estoy seguro de si es la forma más fácil, pero funciona. La idea es crear un disparador que haga todo el trabajo por usted, luego, ejecutar una consulta que actualice su tabla y finalmente soltar este disparador:

delimiter //
create trigger beforeYourTableUpdate  BEFORE UPDATE on YourTable
FOR EACH ROW
BEGIN
  SET new.guid_column := (SELECT UUID());
END
//

Luego ejecuta

UPDATE YourTable set guid_column = (SELECT UUID());

Y DROP TRIGGER beforeYourTableUpdate;

ACTUALIZAR
Otra solución que no usa disparadores, pero requiere primario key o índice único:

UPDATE YourTable,
INNER JOIN (SELECT unique_col, UUID() as new_id FROM YourTable) new_data 
ON (new_data.unique_col = YourTable.unique_col)
SET guid_column = new_data.new_id

ACTUALIZAR una vez más: parece que su consulta original también debería funcionar (tal vez no necesite WHERE columnID is not null, por lo que no se necesita todo mi código elegante.

La solución aprobada crea identificaciones únicas, pero a primera vista parecen idénticas, solo difieren los primeros caracteres.

Si quieres visiblemente diferente keys, prueba esto:

update CityPopCountry set id = (select md5(UUID()));


MySQL [[email protected]] world> select city, id from CityPopCountry limit 10;
+------------------------+----------------------------------+
| city                   | id                               |
+------------------------+----------------------------------+
| A Coruña (La Coruña)   | c9f294a986a1a14f0fe68467769feec7 |
| Aachen                 | d6172223a472bdc5f25871427ba64e46 |
| Aalborg                | 8d11bc300f203eb9cb7da7cb9204aa8f |
| Aba                    | 98aeeec8aa81a4064113764864114a99 |
| Abadan                 | 7aafe6bfe44b338f99021cbd24096302 |
| Abaetetuba             | 9dd331c21b983c3a68d00ef6e5852bb5 |
| Abakan                 | e2206290ce91574bc26d0443ef50fc05 |
| Abbotsford             | 50ca17be25d1d5c2ac6760e179b7fd15 |
| Abeokuta               | ab026fa6238e2ab7ee0d76a1351f116f |
| Aberdeen               | d85eef763393862e5fe318ca652eb16d |
+------------------------+----------------------------------+

Estoy usando la versión del servidor MySQL: 5.5.40-0+wheezy1 (Debian)

valoraciones y comentarios

Agradecemos que quieras defender nuestra función mostrando un comentario o valorándolo te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *