用Mysql写一个注册用户存储过程,注册用户的ID在500000-600000之间的随机数。疑问:
1.mysql如何生成这个范围的随机数,
2.生成的随机数还要判断是否已经用过的。CREATE PROCEDURE pro_member_reg_w(IN in_user_name VARCHAR(50),IN in_nickname VARCHAR(32),IN in_passwd VARCHAR(30),IN in_sex INT,IN in_ip varchar(255))
BEGINDECLARE u_num INT;
SELECT COUNT(*) INTO u_num FROM t_member_basic WHERE t_member_basic.user_name=in_strName;
IF u_num !=0 THEN
select 2 as flag; -- 此帐号名已被注册,请换另一帐号名字尝试再次注册ELSEIF u_num=0 THEN
  DECLARE in_UserID bigint;
  --生成一个500000-600000随机数,并赋值与in_UserID
  --判断这个随机数是否重复
  INSERT t_member_basic(user_id,user_name,user_nick,user_pwd,user_sex,user_type,user_reg_ip,user_reg_time,user_money_pwd,user_img,user_id_cards)
values ( in_UserID ,in_user_name,in_nickname ,in_passwd,in_sex,'1',in_ip,NOW(),in_passwd,'0','');
select 1 as flag;--注册成功
END IF;END求解答。。存储MySQL随机数 注册 添加数据

解决方案 »

  1.   

    各路高手在哪里·~~
    help·~
      

  2.   

    学号应该是主键,用随机数后患无穷,用自增长比较合理,不会重复
    CREATE TABLE student
    ( ID  BIGINT(6) NOT NULL  AUTO_INCREMENT,
      PRIMARY KEY(ID)
    ) ENGINE=INNODB AUTO_INCREMENT=500000; 
      

  3.   

    我也知道,自己写的话,用子增方便也合理,
    现在带这种主键的表已经在用了。要保持原来的设定。
    这个范围的ID是表示注册用户,还有其他类型的用户,是根据ID范围来确定的。那个自增量的话,是不是会自动添加一个不重复的。因为之前用sqlserver的时候已经成成500000-600000的随机user_id了
      

  4.   

    user_id已经是主键了,只是不是自增量,是个500000-600000的随机数
      

  5.   

    user_id已经是主键了,只是不是自增量,是个500000-600000的随机数
    是否可以考虑这样生成呢?
    select 500000+ceil(rand()*100000);