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.