在创建新记录时将随机数插入表中

时间:2013-04-16 23:12:53

标签: mysql sql random

我想在一个MySql表中存储随机数,随机检索一个并在每次创建新记录时将其插入另一个表列。我想在使用随机数字表时删除检索到的数字。

随机数是3位数,其中有900位。

我在这里阅读了几篇文章,描述了使用唯一随机数并触发插入的问题。我想使用这种方法,因为它似乎是可靠的,同时产生一些问题。

这里的任何人都可以给我一个sql查询的例子来完成上述操作吗? (如果sql查询不是推荐的方法,请随意推荐更好的方法。)

感谢您提供任何帮助。

我在这里总结了两个建议并尝试了这个触发器和查询:

CREATE TRIGGER rand_num before 
INSERT ON uau3h_users FOR EACH ROW 
insert into uau3h_users (member_number) 
select random_number from uau3h_rand900 
where random_number not in (select member_number from uau3h_users) 
order by random_number 
limit 1

但似乎已经有一个触发器连接到该表,所以新的一个引起冲突,事情停止工作,直到我删除它。关于如何使用其他方法完成相同的任何想法?

2 个答案:

答案 0 :(得分:1)

您只处理900条记录,因此性能不是主要问题。

如果您在表格中执行单个插入操作,则可以执行以下操作:

insert into t(rand)
    select rand
    from rand900
    where rand not in (select rand from t)
    order by rand()
    limit 1

换句话说,您不必从一个表中继续删除并移动到另一个表。您只需选择插入尚不存在的值即可。如果性能是一个问题,那么索引将在这种情况下有所帮助。

答案 1 :(得分:0)

您很可能需要了解触发器。例如,在表中插入记录后,您可以执行一些操作。请参阅此链接以了解更多详情。 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html