MySQL儲存過程:實現更新UUID
阿新 • • 發佈:2019-02-05
背景交代:
原有資料表中只有自增的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()