用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.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随机数 注册 添加数据
help·~
CREATE TABLE student
( ID BIGINT(6) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID)
) ENGINE=INNODB AUTO_INCREMENT=500000;
现在带这种主键的表已经在用了。要保持原来的设定。
这个范围的ID是表示注册用户,还有其他类型的用户,是根据ID范围来确定的。那个自增量的话,是不是会自动添加一个不重复的。因为之前用sqlserver的时候已经成成500000-600000的随机user_id了
是否可以考虑这样生成呢?
select 500000+ceil(rand()*100000);