MySQL程序随机数生成

MySQL程序随机数生成,mysql,stored-procedures,Mysql,Stored Procedures,我正在编写我的第一个MySQL过程。我尝试生成一个随机数,并用这个数更新表中的值,但前提是它由于唯一约束而不存在。我的程序如下所示: create procedure generaterc() begin declare _rc char; declare _id int; set _id = 1; while _id < ((select count(*) from patient) - 1) do begin set _rc = cast(FLOOR(10000000

我正在编写我的第一个MySQL过程。我尝试生成一个随机数,并用这个数更新表中的值,但前提是它由于唯一约束而不存在。我的程序如下所示:

create procedure generaterc()
begin
declare _rc char;
declare _id int;
set _id = 1;

while _id < ((select count(*) from patient) - 1) do
    begin
    set _rc = cast(FLOOR(1000000000 + (RAND() * 8999999999)) AS char);
    select _rc;
    if not exists(select * from patient where patient.rc = _rc) then
        update patient set rc=_rc where id=_id;
        set _id=_id+1;            
    end if;
    end;
end while;    
end
我在执行过程时遇到了这个错误:数据截断:第8行“\u rc”列的数据太长。我的rc列是varchar255,但我想这不是问题的核心。有什么建议吗

非常感谢。

代替

declare _rc char;
尝试:

目前,rc只能保存一个字符,这不足以存储您的号码

然而,对于您的用例,您可能想看看函数。它生成一个大的随机数,根据某些规则,该随机数是唯一的。这样,您就可以用一条语句替换您的过程:

update patient set rc = uuid_short();

非常感谢你!工作起来很有魅力。我不能使用uuid_short函数,因为我需要_rc变量的长度正好为10个字符。
update patient set rc = uuid_short();