· 6 years ago · Aug 04, 2019, 04:58 PM
1drop table tmp_pet;
2create table tmp_pet (
3old_id int(11),
4new_id int(11) PRIMARY KEY AUTO_INCREMENT
5);
6
7insert into tmp_pet (old_id) select distinct id from character_pet order by id asc;
8
9DELIMITER $$
10 DROP PROCEDURE IF EXISTS renumber$$
11 CREATE PROCEDURE renumber()
12BEGIN
13
14 declare renumber_cur cursor for select * from tmp_pet order by old_id asc;
15 declare continue handler for not found set done=1;
16
17 open renumber_cur;
18
19 renumberLoop: loop
20 fetch renumber_cur into old_id, new_id;
21
22 IF done = 1 THEN
23 LEAVE renumberLoop;
24 END IF;
25
26 START TRANSACTION;
27
28 update character_pet set id = new_id where id = old_id;
29 update character_pet_declinedname set id = new_id where id = old_id;
30 update pet_aura set guid = new_id where guid = old_id;
31 update pet_spell set guid = new_id where guid = old_id;
32 update pet_spell_cooldown set guid = new_id where guid = old_id;
33
34 COMMIT;
35
36 END LOOP renumberLoop;
37
38 close renumber_cur;
39
40 END$$
41DELIMITER ;
42
43call renumber();