CREATE DEFINER=`tmpUser`@`%` FUNCTION `getUniqueIdForTable`(VARCHAR(250)) RETURNS varchar(250) CHARSET utf8mb4
BEGIN
SET @id = MD5(NOW()+RAND());
SET @stmntSTR = CONCAT("SELECT id FROM ",@tablename," WHERE id = @id");
IF NOT isempty(EXECUTE stmnt) THEN #experimental
return getUniqueIdForTable(@tablename);
ELSE
return @id;
END IF;
END
您好,我正在尝试创建一个递归函数来创建一个动态且不重复的ID。 我的问题是获取stmntSTR的结果并检查其元素
答案 0 :(得分:0)
已经有一个MySQL内置函数生成一个UUID:UUID()
。您可以使用它,而不用自己写。
如果您仍然想自己做,则无需为此目的创建递归函数。
WHILE
循环就足够了
CREATE DEFINER=`tmpUser`@`%` FUNCTION `getUniqueIdForTable`(VARCHAR(250)) RETURNS varchar(250) CHARSET utf8mb4
BEGIN
SET @found = 0;
WHILE (FOUND = 0)
SET @id = MD5(NOW()+RAND());
SET @stmntSTR = CONCAT("SELECT id FROM ",@tablename," WHERE id = @id");
IF isempty(EXECUTE stmnt) THEN
SET @found = 1;
END IF;
END WHILE;
RETURN @id;
END