背景交代:
原有数据表中只有自增的id,现在需要新添加一个UUID的列。(UUID不需要“-”)
解决方法:
首先,如果你连自增的id列都没有,可以先生成一个自增id列,就算有数据了也没有关系。然后,我们为uuid给表新增加一列,名字就叫uuid。最后,我们建立如下的存储过程:
DELIMITER $$
USE `reptail`$$
DROP PROCEDURE IF EXISTS `updateUUID`$$
CREATE DEFINER = `root` @`localhost` PROCEDURE `updateUUID` ()
BEGIN
-- 声明一个变量,初始化为0,用于存储表的总记录数
SET @c_num = 0 ;
-- 将最大的自增id存入c_num,方便我们循环处理数据
SELECT
MAX(id) INTO @c_num
FROM
`virtual_compound_database`
;
SET @i = 1 ;
WHILE
@i <= @c_num DO
-- 为当前循环到的id设置uuid,去掉生成的‘-’
UPDATE
`virtual_compound_database`
SET
UUID= REPLACE(UUID(), "-", "")
WHERE id = @i ;
SET @i = @i + 1 ;
END WHILE ;
END $$
DELIMITER ;
调取存储过程的代码如下:
CALL updateUUID()