MySQL replace uuid REPLACE(UUID(), ‘-‘, ‘‘)重复问题,多种解决方案

一、问题描述

1.之前使用的MySQL数据库版本为5.7.23-log,在批量插入数据时使用REPLACE(UUID(), '-', ''),不存在重复问题。

2.后来数据库升级到5.7.36,同样的存储过程就不能使用了,原因就是REPLACE(UUID(), '-', '')重复。

这里是存储过程:

CREATE PROCEDURE `SUMMARY_MONTH` (
    IN Y INT, 
    IN M INT
)
BEGIN
    DECLARE C INT DEFAULT 0;
    SELECT COUNT(*)
    INTO C
    FROM cell_month_flow
    WHERE YEAR = Y
        AND MONTH = M;
    IF C = 0 THEN
        INSERT INTO cell_month_flow
        SELECT REPLACE(UUID(), '-', '') AS ID, CELL_ID
            , YEAR, MONTH, SUM(QUANTITY) AS QUANTITY
        FROM cell_allday_flow
        WHERE YEAR = Y
            AND MONTH = M
        GROUP BY cell_id;
    END IF;
END


3.同样的存储过程,在MySQL版本8以上可以正常运行,已不存在重复问题。

二、在存在重复问题版本数据库下解决方案:

1.将REPLACE替换成MD5:生成32位字符串,符合主键要求,且不存在“-”

 

猜你喜欢

转载自blog.csdn.net/WXF_Sir/article/details/131129276
今日推荐