Zmieniam klucze z INTów na GUIDy.
Napisałem procedurę która to robi, tylko po zmianie jakichś 100 rekordów wystakuje mi probelm z duplikatem klucza (czyli generowane są dwa takie same guidy?? ). Rozumiem że mogą się wygenerować dwa takie same, ALE NIE ZA KAŻDYM RAZEM!
Nie wiem czy to wina tego że procedura wykonuje sie w tak krótkim czasie czy to błąd w napisaniu procedury.
Delimiter $$
DROP PROCEDURE IF EXISTS myProc $$
CREATE PROCEDURE myProc ()
BEGIN
DECLARE gen_guid VARCHAR(36);
DECLARE countryID INT;
DECLARE no_more_departments INT;
DECLARE country_id_to_guid
CURSOR FOR SELECT country_id FROM country;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
SET no_more_departments=0;
OPEN country_id_to_guid;
dept_loop:REPEAT
FETCH country_id_to_guid INTO countryID;
SET gen_guid = uuid();
-- country_id jako klucz główny
UPDATE country SET country_id=gen_guid WHERE country_id=countryID;
-- country_id jako klucze obce
UPDATE team SET country_id=gen_guid WHERE country_id=countryID;
UPDATE user SET country_id=gen_guid WHERE country_id=countryID;
UNTIL no_more_departments
END REPEAT dept_loop;
CLOSE country_id_to_guid;
SET no_more_departments=0;
END$$
Delimiter ;